gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:31:19 26 4
gpt4 key购买 nike

好的,这个问题有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com