为什么google maps api不能与动态lat / long一起使用?

时间:2015-04-13 06:54:35

标签: javascript google-maps google-maps-api-3

我需要根据用户在CMS中设置的地址在地图上放置自定义标记。通过使用该地址,我希望获得该区域的纬度/长度,并且通过使用谷歌地图api,将其放置在正确的位置。这是我的代码:

  function getLatLong(address, callback){
    var geo = new google.maps.Geocoder;

    geo.geocode({'address':address},function(results, status){
      if (status == google.maps.GeocoderStatus.OK) {
        callback (results[0].geometry.location.k + ',' + results[0].geometry.location.D);
      } else {
        return;
      }

    });
  }

  $(document).ready(function(){
    getLatLong("<?= $r['address'] ?>", function(addr){ 
      console.log(addr);
      function initialize() {
        var mapOptions = {
          zoom: 15,
          scrollwheel: false,
          center: new google.maps.LatLng(addr)
        }
        var map = new google.maps.Map(document.getElementById('footer-map'),
                                      mapOptions);

        var image = '<?= parseLink("images/map-marker.png") ?>';
        var myLatLng = new google.maps.LatLng(addr);
        var beachMarker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            icon: image
        });

        console.log('loaded');
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    })
  });

所以它返回带有纬度/经度的console.log(addr),如果我在center: new google.maps.LatLng(addr)而不是addr中复制该值,一切正常,但是如果我离开addr在那里,它只是没有加载地图。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

  1. 无需使用results[0].geometry.location.k + ',' + results[0].geometry.location.D,因为results[0].geometry.location本身就是一个LatLng对象

  2. 以下是完整的代码:

  3.               

    <script>
    
        function getLatLong(address, callback){
            var geo = new google.maps.Geocoder;
    
            geo.geocode({'address':address},function(results, status){
                if (status == google.maps.GeocoderStatus.OK) {
                    console.log(results[0].geometry.location);
                    callback(results[0].geometry.location);} else{return;} });}
    
    
        $(document).ready(function(){
            getLatLong("indore", function(addr){ 
                console.log(addr);
                var mapOptions = {
                    zoom: 4,
                    center: addr
                }
                var map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
    
                var myLatLng = addr;//new google.maps.LatLng(addr);
                var beachMarker = new google.maps.Marker({
                    position: myLatLng,
                    map: map
                });
    
                console.log('loaded');})
    
        });</script></head>
    
    1. 我删除了"<?= $r['address'] ?>"和标记图片,请重新添加