我正在使用“google places autocomplete API”来使用类似的javascript获取有关不同城市的数据:
var service = new google.maps.places.Autocomplete(document.getElementById('search-btn'));
service.addListener('place_changed', function () {
var place = service.getPlace();
console.log(place.geometry.location);
});
问题:对象没有(lat,lng)但它有这条消息
TypeError:'caller'和'arguments'是限制函数 属性,在此上下文中无法访问。
在Function.remoteFunction(:3:14)
at Object.InjectedScript.callFunctionOn(:750:66)
答案 0 :(得分:2)
我似乎有同样的问题。地图工作正常并且昨天返回几何图形,今天它只是空白,没有纬度/经度,并且出现相同的错误。
似乎他们更新了API并且发生了一些事情
编辑:
对我而言,它可以通过获取标记坐标而不是尝试对其进行地理编码来解决,然后使用地址的坐标来解决问题。
我的代码就像(工作12.10.15):
function geocodePosition(pos)
{
geocoder = new google.maps.Geocoder();
geocoder.geocode
({
latLng: pos
},
function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
$("#address").val(results[0].formatted_address);
$("#id_location_0").val(results[0].geometry.location.J);
$("#id_location_1").val(results[0].geometry.location.M);
}
}
);
}
这个停止工作但是能够通过从标记获取坐标来修复它。在我的例子中,Pos变量是marker.getPosition()。
if (status == google.maps.GeocoderStatus.OK)
{
$("#address").val(results[0].formatted_address);
$("#id_location_0").val(marker.position.lat());
$("#id_location_1").val(marker.position.lng());
}
似乎有报道 https://code.google.com/p/gmaps-api-issues/issues/detail?id=8734
你可以尝试:
var service = new google.maps.places.Autocomplete(document.getElementById('search-btn'));
service.addListener('place_changed', function () {
var place = service.getPlace();
console.log(place.geometry.location.lat(), place.geometry.location.lng());
});
答案 1 :(得分:1)
临时解决方案:
var lat = results[0]['geometry']['location'].lat();
var lng = results[0]['geometry']['location'].lng();
答案 2 :(得分:1)
我遇到了同样的问题。我的Lat和Lng似乎是功能但也是错误。 为了获得实际值,您必须实际调用lat和long作为函数,并将其分配给回调中的变量。
geocoder = new google.maps.Geocoder();
geocoder.geocode({'address' : addressString}, function(results, status){
if(status == google.maps.GeocoderStatus.OK){
///~~~~~~~~~The part you care about ~~~~~~~~~~///
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
console.log(lat); // --> 37.7603726
console.log(lng); // --> -122.47157
}
});