0

重点是从 JSON 文件中指出标记,但如果当前 json 没有任何 lat 和 lng 它应该计算它,但它不起作用

//For example when
item.county = 'Orust'
//and 
item.region = 'Bohuslän'

这是为什么?

if(lat == null)
            {
                geocoder.geocode({ 'address': item.county+', '+item.region}, function(result, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if(result[0])
                    {
                        latlng = result[0].geometry.location
                    }
                }
                });

我错过了什么吗?

4

2 回答 2

0

对地理编码器的请求异步运行。您无法从外部代码访问在回调内部分配的变量。实际上你可以,但它是未定义的。

于 2011-07-23T10:02:10.053 回答
0

首先检查回调内部是否按预期工作。为此,请更改:

latlng = result[0].geometry.location;

对此:

console.log(result[0].geometry.location);

(您也可以只添加console.log上面的latlng分配而不是更改它。实际上,这可能更好。)

如果您的 JavaScript 控制台中生成的消息看起来像一个latlng对象,那么问题可能是范围问题 - 换句话说,latlng回调外部与回调latlng内部不同。

如果您的 JavaScript 控制台中生成的消息看起来不像一个latlng对象,那么问题出在回调本身内部。通过将其放在上面最后一个位置来检查您是否得到任何结果console.log()

console.log(result);

如果这些console.log命令从未触发,并且 JavaScript 控制台中没有出现任何内容,则从返回的状态geocoder.geocoder()不是OK,您需要在回调中添加一些错误处理以查看发生了什么。

于 2011-07-22T16:35:10.170 回答