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

Javascript 合并谷歌地图地理编码器和传单地图接收错误:LatLng对象无效,javascript,google-maps,google-maps-api-3,leaflet,cloudmade,Javascript,Google Maps,Google Maps Api 3,Leaflet,Cloudmade,我正在使用谷歌地图地理编码器获取地址的纬度和经度。然后我用传单把地图平移到纬度+经度坐标。但是,我收到Firebug的一个错误,它说错误:无效的LatLng对象:(-33.8674869151.2069902000006,未定义)。我知道我的变量geolocation返回-33.8674869151.2069902000006,但不知道未定义的变量。问题出在哪里 <body onload="initialize()"> <div id="result"></d

我正在使用谷歌地图地理编码器获取地址的纬度和经度。然后我用传单把地图平移到纬度+经度坐标。但是,我收到Firebug的一个错误,它说
错误:无效的LatLng对象:(-33.8674869151.2069902000006,未定义)
。我知道我的变量
geolocation
返回
-33.8674869151.2069902000006
,但不知道未定义的变量。问题出在哪里

 <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 map=L.map('map').setView([33.7489954,-84.3879824],13);
var地理编码器;
函数初始化(){
geocoder=新的google.maps.geocoder();
}
函数代码地址(){
var address=document.getElementById('address')。值;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
var geolocation=String(结果[0].geometry.location);
var geolocation=geolocation.replace('(','');
var geolocation=geolocation.replace('),“”);
panTo地图([地理位置]);
}否则{
$('#result').html('地理编码未成功,原因如下:'+status);
}
});
};
L.tileLayer('http://{s}.tile.cloudmake.com/apikyputhere/997/256/{z}/{x}/{y}.png'{
最大缩放:18
}).addTo(地图);
替换此:

    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

未定义的
是提供给
panTo()

的数组中缺少的第2项。简单的解释和一个将四行代码最小化为一行的答案。非常感谢。的文档指定了一个参数。如果一个数组可以工作,那么你就是幸运的(它不应该工作)。geocoder结果[0]。geometry.location已经是google.maps.LatLng,您可以直接将其传递给panTo。@geocodezip:它不是
google.maps.Map
-对象,它是
传单.Map
-对象,其中
panTo()
接受数组作为参数。感谢您的澄清。