好的,这个问题有 2 个问题:
- 我想在 google map 上显示一个显示县的叠加层...我该怎么做?
- 我想在动态创建标记时根据纬度/经度获取县。
我认为问题 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”是 Object
的 Array
,包含属性 long_name
、short_name
和 types
。 “types”是 string
的 Array
,其中包含描述 long_name
和 short_name
的值。看来您必须遍历每个 address_components
以查找 Object
,其中 types
的字符串值为“administrative_area_level_2”。
关于javascript - Google Maps V3 API --- 我想在动态创建标记时获取基于 lat/lng 的县,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984898/