javascript - Google Maps V3 API --- 我想在动态创建标记时获取基于 lat/lng 的县

标签 javascript jquery google-maps

好的,这个问题有 2 个问题:

  1. 我想在 google map 上显示一个显示县的叠加层...我该怎么做?
  2. 我想在动态创建标记时根据纬度/经度获取县。

我认为问题 2 有点复杂。这是我到目前为止的代码。基本上...“工作标记”以 3 种方式创建: A。用户输入地址---地址已地理编码,已设置标记 b.用户双击 map 并设置标记---地址被反向地理编码 3.用户将默认标记拖到 map 上的新区域---标记集----地址被反向地理编码。

代码如下:

    initialize();

    //Function for the autocomplete field for map
    $(function() {
    $("#address").autocomplete({
      //This bit uses the geocoder to fetch address values
      source: function(request, response) {
       geocoder.geocode( {'address': request.term + ', us' }, function(results, status) {
          response($.map(results, function(item) {
            return {
              label:  item.formatted_address,
              value: item.formatted_address,
              latitude: item.geometry.location.lat(),
              longitude: item.geometry.location.lng()
            }
          }));
        })
      },
      //This bit is executed upon selection of an address
      select: function(event, ui) {
        $("#latitude").val(ui.item.latitude);
        $("#longitude").val(ui.item.longitude);
        var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
        jobMarker.setPosition(location);
        map.setCenter(location);
      }
    });
  });

    //when user drags job marker the new info is added. 
    google.maps.event.addListener(jobMarker, 'drag', function() {
    geocoder.geocode({'latLng': jobMarker.getPosition()}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        if (results[0]) {
          $('#address').val(results[0].formatted_address);
          $('#latitude').val(jobMarker.getPosition().lat());
          $('#longitude').val(jobMarker.getPosition().lng());
        }
      }
    });
  });


   google.maps.event.addListener(map, "dblclick", function(event)
    {


        // display the lat/lng in your form's lat/lng fields
        var location = new google.maps.LatLng(event.latLng.lat(), event.latLng.lng());
        jobMarker.setPosition(location);


        geocoder.geocode({'latLng': jobMarker.getPosition()}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        if (results[0]) {
          $('#address').val(results[0].formatted_address);
          $('#latitude').val(jobMarker.getPosition().lat());
          $('#longitude').val(jobMarker.getPosition().lng());
        }
      }
    });

    });

最佳答案

首先你可以使用Google Map Overlay绘制叠加层。

第二次使用 Geocoding Request您可以取回包含地址(应包括县)的响应

更新

这是来自上面的地理编码请求链接的示例:

{
  "types":["sublocality","political"],
  "formatted_address":"Winnetka, California, USA",
  "address_components":
  [
    {
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["sublocality","political"]
    },
    {
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_3","political"]
    },
    {
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_2","political"]
    },
    {
    "long_name":"California",
    "short_name":"CA",
    "types":["administrative_area_level_1","political"]
    },
    {
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
    }],
  "geometry":{
    "location": [34.213171,-118.571022],
    "location_type":"APPROXIMATE"
  }
}

“address_components”是 ObjectArray,包含属性 long_nameshort_nametypes 。 “types”是 stringArray,其中包含描述 long_nameshort_name 的值。看来您必须遍历每个 address_components 以查找 Object,其中 types 的字符串值为“administrative_area_level_2”。

关于javascript - Google Maps V3 API --- 我想在动态创建标记时获取基于 lat/lng 的县,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984898/

相关文章:

javascript - 对中间循环数字使用最终循环值

javascript - 如何从 Google 表单提交触发器函数访问电子表格

javascript - 获取附加文本区域的值

javascript - window.setInterval 使用局部函数

jquery ajax调用-提交一些表单数据

javascript - 加载 Angular 谷歌地图时无法在 'write' 错误上执行 'Document'

javascript - 单击按钮后禁用文本区域

javascript - 如何将我自己的样式应用到 uploadify 灰色渐变按钮?

javascript - 禁用特定列的 location.href

android - 如何在 Android Map Fragment 中禁用 map 旋转功能