Ric*_*ard 19 jquery google-maps-api-3
我有一张加载的地图.我想添加一个标记,从文本框中获取它的lat和long,我无法理解它.
单击updatemap按钮时没有任何反应.
到目前为止,这是我的代码:
$(document).ready(function () {
alert("Dom, dom dom dom dom");
var map;
var marker;
function initialize() {
var myLatlng = new google.maps.LatLng(40.65, -74);
var myOptions = {
zoom: 2,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
}
var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
}
$("#updateMap").click(function(){
var newLatLng = new google.maps.LatLng(lat, lng);
marker.setPosition(newLatLng);
var lat = parseFloat(document.getElementById('markerLat').value);
var lng = parseFloat(document.getElementById('markerLng').value);
var newLatLng = new google.maps.LatLng(lat, lng);
marker = new google.maps.Marker({
position: newLatLng,
map: map,
draggable: true
});
});
});
// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', initialize);
});
Run Code Online (Sandbox Code Playgroud)
no.*_*ing 33
更新
此外,您的全局map引用永远不会设置为实际的地图实例,因为您使用本地var相同的名称对其进行了遮罩.
var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
Run Code Online (Sandbox Code Playgroud)
这应该是公正的
map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
Run Code Online (Sandbox Code Playgroud)
您在初始化之前使用lat和lng用于标记位置(除非它们全局设置在某处):
var newLatLng = new google.maps.LatLng(lat, lng);
marker.setPosition(newLatLng);
Run Code Online (Sandbox Code Playgroud)
如果你想更新同一个标记的位置而不是创建一个新标记,你应该这样做:
$("#updateMap").click(function(){
var lat = parseFloat(document.getElementById('markerLat').value);
var lng = parseFloat(document.getElementById('markerLng').value);
var newLatLng = new google.maps.LatLng(lat, lng);
marker.setPosition(newLatLng);
});
Run Code Online (Sandbox Code Playgroud)