谷歌地图地理编码问题

时间:2009-04-27 21:35:45

标签: javascript google-maps maps geocoding

我第一次玩谷歌地图。我正在努力寻找有关标记所在位置的一些信息。

我已经为你建立了一个例子。当我拖动A节点时,问题发生了,getGeocode()返回undefined?

当我拖动它时,我需要从节点中提取邮政编码,城市和地址。

请参阅http://dev.korebogen.dk/gmap/

提前致谢!

更新

我从响应中编辑了我的代码 - 现在我将两个地址都删除了(仍然需要删除它以便我在单独的变量中获取信息)但是由于某种原因我的方向输出结果是“0”和“1 “(数组)我真的需要反转地理编码吗?

是否可以在地图上制作点击事件以添加A和B标记(如果加载时没有指示?)http://dev.korebogen.dk/gmap/已更新!

它来自:

var param = i + "@" + newMarkers[i].getLatLng().y + "," + newMarkers[i].getLatLng().x;

这是更新的部分:

GEvent.addListener(newMarkers[i], "dragend", function() {
            var points = [];
            for (var i = 0; i < newMarkers.length; i++) {
                var param = i + "@" + newMarkers[i].getLatLng().y + "," + newMarkers[i].getLatLng().x;
                //points[i] = newMarkers[i].getLatLng();
                points.push(param);
                if (!i) {
                    var x = new GClientGeocoder();

                    x.getLocations(newMarkers[0].getLatLng(), function(addresses) {
                        if (addresses.Status.code == 200) {
                            var address = addresses.Placemark[0].address;
                            document.getElementById("start").innerHTML = address;
                        }
                    });

                    x.getLocations(newMarkers[1].getLatLng(), function(addresses) {
                        if (addresses.Status.code == 200) {
                            var address = addresses.Placemark[0].address;
                            document.getElementById("end").innerHTML = address;
                        }
                    });
                }
            }
            gdir.loadFromWaypoints(points);

        });

2 个答案:

答案 0 :(得分:1)

您正在尝试将位置转换为地址,通常称为“反向地理编码”。

请参阅示例代码here

简而言之,您应该调用GClientGeocoder.getLocations

,而不是调用getGeocode

答案 1 :(得分:1)

此处的问题是,您从loadFromWaypoints请求返回的对象未填充您在onGDirectionsLoad()中要求的所有成员。如果你查看你的javascript错误日志,你会看到:

错误:gdir.getRoute(0).getStartGeocode()。AddressDetails.Country未定义

好的,根据Google Documention,来自loadFromWaypoints和GClientGeodcoder的响应应该相同。

我冒昧地做了一些testing with your sample,突然变得很明显,答案是不一样的。如果您查看http://www.cannonade.net/geo.js,您可以看到我对GClientGeocoder请求和第一个标记的响应进行了字符串化,它们非常不同。所以你需要做几件事:

  • 检查您的回复,确保您没有因未填充的结果而出现javascript错误:

    if('resD中的'AddressDetails')

  • 对每个标记点执行GClientGeocoder请求以获取完整的地址信息。我的样本为第一个标记做了这个。