如何从谷歌地图上的标记获取城市名称和州/省

时间:2014-09-14 22:28:13

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

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

我在本网站上找到的所有内容都是从标记中获取完整格式化地址的选项。 (像这样:228 Barbary Coast Trail,旧金山,加利福尼亚州94102,美国)

我正在开发一个只需要

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

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

登录时我希望他们

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

在表单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>

应该很容易但是......我认为我在这个上绞了脑筋......&#34;

1 个答案:

答案 0 :(得分:0)

您可以使用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