谷歌地图 - 使用 JavaScript 的地理编码器获取经纬度

8

我正在尝试使用谷歌地图API从地址获取经纬度值,但似乎没有返回任何值。我的语法有问题吗?

var point = GClientGeocoder.getLatLng('1600 Pennsylvania Avenue NW Washington, DC 20500');
alert(point);

你有收到任何错误信息吗? - Pekka
3个回答

38

看起来你正在使用Google Maps的v2版本;如果你有兴趣使用v3版本(因为Google已经正式弃用了v2版本),你可以尝试以下操作:

var mygc = new google.maps.Geocoder();
mygc.geocode({'address' : '1600 Pennsylvania Avenue NW Washington, DC 20500'}, function(results, status){
    console.log( "latitude : " + results[0].geometry.location.lat() );
    console.log( "longitude : " + results[0].geometry.location.lng() );
});

这与其他示例类似,除了:

  • 你调用 new google.maps.Geocoder() 代替 GClientGeocoder()
  • 你传入一个带有'address'属性的对象,而不是仅传递字符串
  • 结果是一个JSON对象,这意味着你需要以稍微不同的方式访问lat/lng

Google API文档为v3提供了更多详细信息。干杯!


8
这可以正常工作(前提是您拥有正确的API密钥,并受到每天2500个请求的速率限制):
address_string = '1600 Pennsylvania Avenue NW Washington, DC 20500';
geocoder = new GClientGeocoder();
geocoder.getLatLng(
    address_string,
    function(point) {
        if (point !== null) {
            alert(point); // or do whatever else with it
        } else {
            // error - not found, over limit, etc.
        }
    }
);

你似乎在调用 GClientGeocoder 的一个函数,你需要创建一个 new GClientGeocoder() 并调用它的函数。

1

可以尝试这样写:

geocoder = new GClientGeocoder();
point = geocoder.getLatLng(address)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接