2

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

我已经设置了一个示例供您查看。当我拖动 A 节点时出现问题,getGeocode() 返回未定义?

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

请参阅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);

        });
4

2 回答 2

1

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

请参阅此处的示例代码。

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

于 2009-04-27T23:34:31.963 回答
1

这里的问题是,您从 loadFromWaypoints 请求返回的对象没有填充您在 onGDirectionsLoad() 中请求的所有成员。如果您查看您的 javascript 错误日志,您将看到:

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

好的,根据谷歌文档,来自 loadFromWaypoints 和 GClientGeodcoder 的响应应该是相同的。

我冒昧地对您的样本进行了一些测试,突然发现反应不一样了。如果您查看http://www.cannonade.net/geo.js,您会看到我对 GClientGeocoder 请求和第一个标记的响应进行了字符串化,它们非常不同。所以你需要做几件事:

  • 检查您的回复以确保您不会收到未填充结果的 javascript 错误:

    if ('AddressDetails' in resp)

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

于 2009-04-28T00:26:05.020 回答