我找到了反向地理编码的代码:
var point = new GLatLng (lat[1],long[1]);
var geocoder = new GClientGeocoder();
geocoder.getLocations (point, function(result) { alert (lat[1]+' '+long[1]+' '+result.address); });
但是它弹出警告,说result.address是'undefined'。任何想法,可能是什么问题?
编辑:让它工作,谢谢。
答案 0 :(得分:3)
你可以包括'lat'和'long'的定义吗?此外,'long'是一个保留关键字,因此可能是一个错字/错误。
此外,至少以gmaps v2 json格式返回的结果具有更复杂的结构,并且'result.address'将没有任何内容。当我测试它时,我需要访问其中一个地址,例如:
result.Placemark[0].address
请参阅http://code.google.com/apis/maps/documentation/geocoding/index.html#GeocodingResponses
答案 1 :(得分:1)
由此我只能告诉result
没有被传递给函数或者它不是一个对象。
您需要查看回调函数接收的参数。这是文档所说的内容:
此响应将包含状态代码,如果成功,则包含一个或多个Placemark对象。
如果你正在使用Firebug,你可以通过这种方式看到传递给回调的内容:
var point = new GLatLng (lat[1],long[1]);
var geocoder = new GClientGeocoder();
geocoder.getLocations (point, function(result) {
window.console.log(arguments);
// Here you will see what arguments are passed and
// decide what to do about them
});