2013-11-26 2 views
-1

Лонг и лат отправляются в корне, но маркеры не отображаются.Границы долготы и широты Карт Google

$(function() { 
     var map; 
     var markers = new Array(); 
     var mapOptions = { 
      center: new google.maps.LatLng(46.4750370, 7.2843), 
      zoom: 7, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map"), mapOptions); 


     function initialize() { 
      // var bounds = new google.maps.LatLngBounds(); 
      google.maps.event.addListener(map, 'zoom_changed', onClickCallback); //listen to zoom event and call function to reload markers 
      google.maps.event.addListener(map, 'drag', onClickCallback); //listen to drag/pan event and call function to reload markers 

      google.maps.event.addListener(map, 'tilesloaded', function() { 
       onClickCallback(map); 
      }); 
     } 


     function onClickCallback(map) { 
      var bounds = map.getBounds(); 

      $.getJSON('http://skiweather.eu/gmap3/markers/index.php', { 
       swLat: bounds.getSouthWest().lat(), 
       swLon: bounds.getSouthWest().lng(), 
       neLat: bounds.getNorthEast().lat(), 
       neLon: bounds.getNorthEast().lng() 
      }, function (data) { 
       $.each(data.markers, function (i, marker) { 
        $('#map').gmap('addMarker', { 
         'position': new google.maps.LatLng(marker.latitude, marker.longitude), 
         'bounds': true 
        }).click(function() { 
         $('#map').gmap('openInfoWindow', { 
          'content': marker.content 
         }, this); 
        }); 
       }); 
      }); 
     } 

     google.maps.event.addDomListener(window, 'load', initialize); 

ответ

0

Проблема заключается в том, вы просто создать пустой объект LatLngBounds, следовательно, почему это недобросовестный 1, -1, 180, -180. Вы хотите узнать пределы вашей карты вместо этого:

var bounds = map.getBounds(); 

Вам нужно либо передать свой объект на карту в вашу onClickCallback функции, или сделать его глобальным переменным.


Обновление: Попробуйте это вместо этого. Вы все равно хотите создать карту внутри своей функции initialize. :

$(function() { 
     var map; 
     var markers = new Array(); 

     function initialize() { 
      var mapOptions = { 
       center: new google.maps.LatLng(46.4750370, 7.2843), 
       zoom: 7, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      map = new google.maps.Map(document.getElementById("map"), mapOptions); 

      google.maps.event.addListener(map, 'zoom_changed', onClickCallback); //listen to zoom event and call function to reload markers 
      google.maps.event.addListener(map, 'drag', onClickCallback); //listen to drag/pan event and call function to reload markers 

      google.maps.event.addListener(map, 'tilesloaded', function() { 
       onClickCallback(map); 
      }); 
     } 


     function onClickCallback(map) { 
      var bounds = map.getBounds(); 

      $.getJSON('http://skiweather.eu/gmap3/markers/index.php', { 
       swLat: bounds.getSouthWest().lat(), 
       swLon: bounds.getSouthWest().lng(), 
       neLat: bounds.getNorthEast().lat(), 
       neLon: bounds.getNorthEast().lng() 
      }, function (data) { 
       $.each(data.markers, function (i, marker) { 
        $('#map').gmap('addMarker', { 
         'position': new google.maps.LatLng(marker.latitude, marker.longitude), 
         'bounds': true 
        }).click(function() { 
         $('#map').gmap('openInfoWindow', { 
          'content': marker.content 
         }, this); 
        }); 
       }); 
      }); 
     } 

     google.maps.event.addDomListener(window, 'load', initialize); 
+0

Как сделать глобальную переменную? – mark

+0

Вместо того, чтобы создавать 'var map;' внутри вашей функции инициализации, сделайте это непосредственно над этим (т. Е. С любой функцией) – duncan

+0

Итак, я сделал это, но маркеры не видны. Я изменил код выше. – mark

Смежные вопросы