Сообщение от rogaz
|
но раз работает
|
как раз неработает -- нет у вас places на момент запуска setMarkers - за счёт алерта ответ с сервера успевает приходить
вариант 1 самый простой - по готовности html идёт запрос на сервер - пришёл ответ запускаем инициализацию
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
var latitude=0;
var longitude=0;
var places = [];
$(function(){
$.getJSON("http://freegeoip.net/json/198.11.179.103", function(json) {
latitude = json.latitude;
longitude = json.longitude;
places.unshift([,35.333332,25.133333]);
places.unshift([,39.704445,21.626944]);
places.unshift([,latitude,longitude]);
initialize()
});
});
function initialize() {
var latlng = new google.maps.LatLng(56.323678, 44.0);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
setMarkers(map, places);
};
function setMarkers(map, locations) {
//Определяем область показа маркеров
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < places.length; i++) {
var myLatLng = new google.maps.LatLng(locations[i][1], locations[i][2]);
//Добавляем координаты маркера в область
latlngbounds.extend(myLatLng);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: locations[i][0],
});
}
//Центрируем и масштабируем карту
map.setCenter( latlngbounds.getCenter(), map.fitBounds(latlngbounds));
};
</script>
</head>
<body >
<div id="map_canvas" style="width:800px; height:600px"></div>
</body>
</html>
тоже самое чуть иначе
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
var latitude=0;
var longitude=0;
var places = [];
$(function(){
$.getJSON("http://freegeoip.net/json/198.11.179.103", function(json) {
latitude = json.latitude;
longitude = json.longitude;
places.unshift([,35.333332,25.133333]);
places.unshift([,39.704445,21.626944]);
places.unshift([,latitude,longitude]);
}).done(initialize);
});
function initialize() {
var latlng = new google.maps.LatLng(56.323678, 44.0);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
setMarkers(map, places);
};
function setMarkers(map, locations) {
//Определяем область показа маркеров
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < places.length; i++) {
var myLatLng = new google.maps.LatLng(locations[i][1], locations[i][2]);
//Добавляем координаты маркера в область
latlngbounds.extend(myLatLng);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: locations[i][0],
});
}
//Центрируем и масштабируем карту
map.setCenter( latlngbounds.getCenter(), map.fitBounds(latlngbounds));
};
</script>
</head>
<body >
<div id="map_canvas" style="width:800px; height:600px"></div>
</body>
</html>