0

我找到了用于反向地理编码的代码:

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 是“未定义”。任何想法,可能是什么问题?


编辑:得到它的工作,谢谢。

4

2 回答 2

3

你能包括'lat'和'long'的定义吗?此外,“long”是保留关键字,因此很可能是错字/错误。

此外,返回的结果,至少在 gmaps v2 json 格式中,具有更复杂的结构,并且“result.address”不会有任何内容。当我对其进行测试时,我需要使用以下内容访问其中一个地址:

result.Placemark[0].address

请参阅http://code.google.com/apis/maps/documentation/geocoding/index.html#GeocodingResponses

于 2010-04-19T13:33:23.230 回答
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
});
于 2010-04-19T13:24:23.390 回答