我有一些编码方面的经验,但我是Javascript的新手。
我尝试创建一个html文件,显示一个谷歌地图并在其上放置一些标记。
当我一次只使用一个标记时,它可以正常工作,如下所示:
function initMap() {
var map = ...;
var icon = ...;
var pt1 = {lat: ..., lng: ...};
var marker1 = new google.maps.Marker({
position: pt1,
map: map,
icon: icon,
label: {..., text: '1'},
title: 'Marker 1'
});
var pt2 = {lat: ..., lng: ...};
var marker2 = new google.maps.Marker({
position: pt2,
map: map,
icon: icon,
label: {..., text: '2'},
title: 'Marker 2'
});
var pt3 = {lat: ..., lng: ...};
var marker3 = new google.maps.Marker({
position: pt3,
map: map,
icon: icon,
label: {..., text: '3'},
title: 'Marker 3'
});
}
现在我尝试将标记的定义放在一个数组中,并在循环中创建标记,但我无法让它工作。
我试过这样:
var places = [
{id: 1, lat: ..., lng: ..., title: 'Marker 1'},
{id: 2, lat: ..., lng: ..., title: 'Marker 2'},
{id: 3, lat: ..., lng: ..., title: 'Marker 3'}
]
function initMap() {
var map = ...;
var icon = ...;
for(var i=0; i<places.length; i++) {
var marker = new google.maps.Marker({
position: {lat: places[i].lat, lng: places[i].lng},
map: map,
icon: icon,
label: {..., text: ''+places[i].id},
title: places[i].title
});
}
}
在循环中放置window.alert(places[i].title)
会显示所有标题,因此数组的定义和循环的头部似乎没问题。但是当我尝试在循环中创建标记时,没有地图也没有显示标记,所以我猜必定会出现某种错误,但我无法弄明白。
你看到我做过任何语法错误吗?
答案 0 :(得分:0)
你正在覆盖&#34;标记&#34;每次变量。
var marker = new google.maps.Marker({
您必须为标记创建一个数组,就像您为点(lat,long,tile)所做的那样。
应该是:
var places = [
{id: 1, lat: ..., lng: ..., title: 'Marker 1'},
{id: 2, lat: ..., lng: ..., title: 'Marker 2'},
{id: 3, lat: ..., lng: ..., title: 'Marker 3'}
]
function initMap() {
var map = ...;
var icon = ...;
var markers = [];
for(var i=0; i<places.length; i++) {
markers.push(new google.maps.Marker({
position: {lat: places[i].lat, lng: places[i].lng},
map: map,
icon: icon,
label: {..., text: ''+places[i].id},
title: places[i].title
}));
}
}
你应该使用const作为数组(标记和位置)并让for循环。