【问题标题】:How to get the city name and state/province from marker on google maps如何从谷歌地图上的标记中获取城市名称和州/省
【发布时间】:2014-11-08 10:10:16
【问题描述】:

在论坛上搜索了几天,我仍然无法理解它......

我能在这个网站上找到的只是从标记中获取完整格式地址的选项.. (例如:228 Barbary Coast Trail, San Francisco, California 94102, United States)

我正在开发一个只需要

的应用程序
  • 城市或村庄名称
  • 州/省或地区名称
  • 国家名称

(不需要其他东西,因为其余的都是通过纬度/经度坐标运行的)。

登录时我希望他们能够

  • 通过谷歌地图上的标记设置坐标 (onclick 并且只有一个标记,第二次单击标记会删除第一个标记,不确定我是否会使用传感器......)

在 Lat/Lon 和 city/state/Country 表格的隐藏文本字段中更新的标记值

一切正常,但我无法让城市名称等出现在文本框中...(在此示例中取消隐藏文本框)

这是我目前得到的代码...

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
    #map_canvas {height:600px;width:800px}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true">    </script>

<script type="text/javascript">
    var map;
    var markersArray = [];

    function initMap()
    {
        var latlng = new google.maps.LatLng(48.850258199721495, 2.373046875);
        var myOptions = {
            zoom: 10,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        // add a click event handler to the map object
        google.maps.event.addListener(map, "click", function(event)
        {
            // place a marker
            placeMarker(event.latLng);

            // display the lat/lng in your form's lat/lng fields
            document.getElementById("latFld").value = event.latLng.lat();
            document.getElementById("lngFld").value = event.latLng.lng();


        });
    }
    function placeMarker(location) {
        // first remove all markers if there are any
        deleteOverlays();

        var marker = new google.maps.Marker({
            position: location, 
            map: map
        });

        // add marker in markers array
        markersArray.push(marker);

        //map.setCenter(location);
    }

    // Deletes all markers in the array by removing references to them
    function deleteOverlays() {
        if (markersArray) {
            for (i in markersArray) {
                markersArray[i].setMap(null);
            }
        markersArray.length = 0;
        }
    }

</script>
</head>

<body onload="initMap()">
<div id="map_canvas"></div>
<input type="text" id="latFld">
<input type="text" id="lngFld">
<input type="text" id="City">
<input type="text" id="Area">
</body>
</html>

应该很容易,但是......“我想我在这个问题上扭曲了我的大脑......”

【问题讨论】:

  • 在这里你可以找到Reverse Geocoding docs
  • 这仅解释了如何获取完整地址,并且在您只需要城市/州/国家/地区时不是很有帮助......对不起:-(上面是一个工作示例,但它错过了这个功能....
  • 谢谢!使用 json 将值放入数组并再次拆分...然后提取结果!

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


【解决方案1】:

您可以使用 RESULT_TYPE ='country' 过滤结果以获取国家/地区。 请参阅 RESULT_TYPE 的文档。

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&location_type=ROOFTOP&result_type=country&key=API_KEY

【讨论】:

  • 使用带有 json 的反向地理编码将值放入数组中,然后再次拆分...
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多