结合谷歌地图地理编码器和传单地图接收错误:无效的 LatLng 对象



我正在使用谷歌地图地理编码器来获取地址的纬度和经度。然后,我获取该地址并使用传单并将地图平移到纬度+经度坐标。但是,我收到来自Firebug的错误,说Error: Invalid LatLng object: (-33.8674869, 151.20699020000006, undefined)。我知道我的变量geolocation返回-33.8674869, 151.20699020000006但不是未定义的。导致问题的原因是什么?

 <body onload="initialize()">
  <div id="result"></div>
 <div>
  <input id="address" type="textbox" value="Sydney, NSW">
  <input type="button" value="Geocode" onclick="codeAddress()">
 </div>
 <div id="map"></div>
 <script type="text/javascript">
 var map = L.map('map').setView([33.7489954, -84.3879824], 13);
  var geocoder;
  function initialize() {
    geocoder = new google.maps.Geocoder();     
  }
  function codeAddress() {
    var address = document.getElementById('address').value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        var geolocation = String(results[0].geometry.location);
        var geolocation = geolocation.replace('(','');
        var geolocation = geolocation.replace(')','');      
        map.panTo([geolocation]);
      } else {
        $('#result').html('Geocode was not successful for the following reason: ' + status);
      }
    });
  };
L.tileLayer('http://{s}.tile.cloudmade.com/apikeyputhere/997/256/{z}/{x}/{y}.png', {
maxZoom: 18
}).addTo(map);
</script> 

替换这个:

    var geolocation = String(results[0].geometry.location);
    var geolocation = geolocation.replace('(','');
    var geolocation = geolocation.replace(')','');      
    map.panTo([geolocation]);

有了那个:

map.panTo([results[0].geometry.location.lat(),results[0].geometry.location.lng()]);

解释:
您将字符串分配给第一个数组值,它与:

geolocation=new Array('-33.8674869, 151.20699020000006')//contains 1 string
字符串

不会被计算,它将保持 1 个字符串,但你需要一个有 2 个浮点数的数组:

geolocation=new Array(-33.8674869, 151.20699020000006)//contains 2 floats

undefined是提供给panTo()的数组中缺少的第 2 项

最新更新