我正在尝试在地图上显示标记。但它没有显示出来。
这是我使用的代码:
var map;
var markers = new Array();
function initialize() {
var mapOptions = {
zoom: 12,
center: new google.maps.LatLng(27.9881, 86.9253),
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
google.maps.event.addListener(map, 'click', addMarker);
}
function addMarker(event) {
markers.push(event.latLng);
marker = new google.maps.Marker({
position: event.latLng,
map: map
});
console.log(markers);
}
google.maps.event.addDomListener(window, 'load', initialize);
控制台每次单击一个新坐标时都会登录,因此调用该函数,并传递坐标。我无法在标记代码中看到任何问题。
所以有人能看到问题吗?
答案 0 :(得分:3)
map
是一个局部变量,仅在initialize
内可见。
设置标记的this
- 属性时,请使用map
代替map
:
function addMarker(event) {
markers.push(event.latLng);
marker = new google.maps.Marker({
position: event.latLng,
map: this
});
}
说明:
回调将在触发事件的对象范围内执行。这是Maps-instance(因为click-listener已应用于地图),this
将在回调中引用此对象。
答案 1 :(得分:2)
markers.push(event.latLng);
在这里你推动了latlng,而不是标记。
markers
是一个具有全局范围的数组变量,而marker
是一个局部变量
在markers
数组中,您必须插入每个单独的marker
,然后对其进行处理。
function addMarker(event) {
var marker = new google.maps.Marker({
position: event.latLng,
map: map
});
markers.push(marker);
}