Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.07.2015, 13:21
Новичок на форуме
Отправить личное сообщение для rogaz Посмотреть профиль Найти все сообщения от rogaz
 
Регистрация: 27.07.2015
Сообщений: 3

Отображение меток на карте
Доброго времени суток! Работая с api google в какой-то момент столкнулся со странной проблемой. Если удаляю alert(совершенно бесполезный) метки перестают отображаться. Чего-то я не понимаю,подскажите, пожалуйста в чем тут дело.

<!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 = [];

$.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]);
});
		
  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));	 
    };
alert("");
</script>
</head>
<body onload="initialize()">
  <div id="map_canvas" style="width:800px; height:600px"></div>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2015, 13:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

rogaz,
то есть вы думаите что строка 12 сработает мгновенно и незатупит строку 38 ?
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2015, 14:07
Новичок на форуме
Отправить личное сообщение для rogaz Посмотреть профиль Найти все сообщения от rogaz
 
Регистрация: 27.07.2015
Сообщений: 3

Сообщение от рони Посмотреть сообщение
rogaz,
то есть вы думаите что строка 12 сработает мгновенно и незатупит строку 38 ?
не знаю, но раз работает видимо она ей не мешает. а как бы вы изменили код?
Ответить с цитированием
  #4 (permalink)  
Старый 27.07.2015, 14:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от 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>
Ответить с цитированием
  #5 (permalink)  
Старый 28.07.2015, 07:55
Новичок на форуме
Отправить личное сообщение для rogaz Посмотреть профиль Найти все сообщения от rogaz
 
Регистрация: 27.07.2015
Сообщений: 3

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стили на карте России заплачу 300 руб! Millerlight Общие вопросы Javascript 0 11.04.2014 09:54
Неккоректное отображение jquery меню в Google Chrome и Opera Galyanov Opera, Safari и др. 6 25.01.2011 00:26
Подсветить выбранный дом на карте Sallity Events/DOM/Window 7 07.06.2010 18:13
Отображение разных групп маркеров на карте dummer Общие вопросы Javascript 2 19.06.2009 13:47
Google map. Нарисовать на карте иконку. Flake Элементы интерфейса 1 21.11.2008 08:04