我有使用 Google map API v3 的 Google map 。 我拥有的是 Accordion 式的 Google map ,用户可以单击并放置一个标记,并将纬度和经度值填充到顶部的两个文本框。
这部分与下面的脚本配合得很好。 但我现在想要的是,如果用户更改文本框标记中的纬度或经度值,则需要相应地更改文本框,因为文本框填充了纬度和经度。
var map = null;
function initialize() {
var myLatlng = new google.maps.LatLng(25.263327,55.329895);
var myOptions = {
zoom: 10,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker;
function placeMarker(location) {
if ( marker ) {
marker.setPosition(location);
} else {
marker = new google.maps.Marker({
position: location,
map: map
});
}
}
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
document.getElementById("latFld").value = event.latLng.lat();
document.getElementById("lngFld").value = event.latLng.lng();
});
}
$(document).ready(function() {
$("#accordion").bind('accordionchange', function(event, ui) {
if (ui.newContent.attr('id') == 'tabThree' && !map)
{
map = initialize();
}
});
});
最佳答案
像这样的东西可能会起作用:
function updatePosition(){
var lat = parseFloat(document.getElementById("latFld").value);
var lon = parseFloat(document.getElementById("lngFld").value);
if (lat && lon) {
var newPosition = new google.maps.LatLng(lat,lon);
placeMarker(newPosition);
}
}
...以及您的 HTML
<input id ='latFld' onkeyup='updatePosition()'>
<input id ='latFld' onkeyup='updatePosition()'>
您可能想要使用 onchange 而不是 onkeyup 以使其不那么过度活跃。 :-)
关于javascript - Google map 上的文本框值更改更新标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342052/