地理编码不会在谷歌地图上确切地确定点位置

时间:2013-07-11 07:22:22

标签: javascript google-maps google-maps-api-3 google-maps-markers geocoding

在Google地图中,当我拖动文本框中显示的标记lat()lng()值时。我想在这里喜欢:

Coordinates change for every movement

我的以下代码部分适合我。但是,当我将标记拖到远处时,它会起作用,但是 in  距离 lat()lng()不会改变?

我该如何解决这个问题?

主js代码是:

// fill in the UI elements with new position data
            function update_ui(address, lat, lng) {
            $('#lat').val(lat);
            $('#lng').val(lng);
        }


 // move the marker to a new position, and center the map on it
        function update_map(geometry) {
            map.fitBounds(geometry.viewport)
            marker.setPosition(geometry.location)
        }

和地理编码:

geocoder.geocode(request, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                // Google geocoding has succeeded!
                if (results[0]) {
                    // Always update the UI elements with new location data
                    update_ui(results[0].formatted_address, results[0].geometry.location.lat(), results[0].geometry.location.lng())

                    // Only update the map (position marker and center map) if requested
                    if (update) { update_map(results[0].geometry) }
                } else {
                    // Geocoder status ok but no results!?
                    alert("Error occured. Please try again.");
                }
            } else {
                // Google Geocoding has failed. Two common reasons:
                //   * Address not recognised (e.g. search for 'zxxzcxczxcx')
                //   * Location doesn't map to address (e.g. click in middle of Atlantic)

                if (type == 'address') {
                    alert("Sorry! We couldn't find " + value + ". Try a different search term, or click the map.");
                } else {
                    alert("Sorry! We couldn't find " + value + ". Try a different search term, or click the map.");
                    update_ui('', value.lat(), val.lng())
                }
            };
        });

修改

当我拖动标记很少时,坐标不会改变,但在一些移动后它们会改变。这是jsfiddle:

http://jsfiddle.net/jhoonbey/wwdE9/

1 个答案:

答案 0 :(得分:1)

问题在于您是通过地理编码器传递标记的位置。

地理编码器获取原始的lat / lng位置并尝试将其映射到地址。这可以是街道,城镇或地区。 Google地理编码器返回的结果包括地址文本以及该地址的位置。

您正在显示地理编码器返回的位置。当用户在具有低密度潜在地址的区域周围移动标记时,您将看到锯齿。这意味着用户“选择”的各种原始位置将反转地理编码为地理编码器返回的相同地址。

因此,当你正在做的是显示地理编码地址的纬度/经度时,看起来好像标记的纬度/经度没有变化。

请注意,您链接到的网站在显示位置信息时不会执行任何地理编码。