【问题标题】:Google Maps Geocoding problem谷歌地图地理编码问题
【发布时间】:2010-10-22 04:14:47
【问题描述】:

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

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

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

请看http://dev.korebogen.dk/gmap/

提前致谢!

更新

我从响应中编辑了我的代码 - 现在我得到了两个地址(仍然需要剥离它,以便我获得单独变量中的信息)但由于某种原因,我的方向输出结果是“0”和“1” " (array) 我真的需要反向地理编码吗?

是否可以在地图上进行点击事件以添加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);

        });

【问题讨论】:

  • 由于您传递给 loadFromWaypoints (name@latitude,longitude) 的字符串数组的格式,您将获得方向名称的 0 和 1。该名称正在获取数组的索引。您可以返回注释掉的行,它会起作用。

标签: javascript google-maps maps geocoding


【解决方案1】:

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

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

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

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

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

    if ('AddressDetails' in resp)

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

【讨论】:

  • 糟糕,忘记了说 loadFromWaypoints 返回与 GClientGeocoder code.google.com/apis/maps/documentation/… 匹配的结果的文档的链接
  • 这太棒了!我需要发布一些代码,所以请在顶部查看我更新的帖子:)
【解决方案2】:

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

见示例代码here

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多