在地图中显示多个标记
所以我在一个地理定位项目中工作(asp.net MVC4),我在我的数据库中有很多职位,我想在我的地图中显示它,我的问题是脚本只显示第一个位置,这是我的脚本:在地图中显示多个标记
var checkpoints = [];
function setMarkers(map, locations) {
for (var i = 0; i < locations.length; i++)
{
var place = locations;
for (var i = 0; i < place.length; i++)
{
var points = new google.maps.LatLng(place[i][1], place[i][2]);
checkpoints.push(points);
}
var check = checkpoints[0];
var index = 0;
for (var j = 0; j < checkpoints.length; j++)
{
check = checkpoints[j];
index = j;
var myLatLng = new google.maps.LatLng(place[index][1], place[index][2]);
var marker = new google.maps.Marker
(
{
position: myLatLng,
map: map,
title: place[index][0],
zIndex: place[index][3]
}
);
}
}
return marker;
}
所以如果有人有任何解决方案或想法,我将非常感激。
谢谢大家@大卫@甜菜,甜菜根@razzak我的剧本现在工作得很好,这是我的新的脚本:
var checkpoints = [];
function setMarkers(map, locations) {
for (var i in locations) {
var points = new google.maps.LatLng(locations[i][1], locations[i][2]);
checkpoints.push(points);
var marker = new google.maps.Marker({
map: map,
position: points,
title: locations[i][0],
zindex: locations[i][4]
});
}
}
更新: 我的脚本工作正常,但我有一个小问题我事件,当我上的一个标记DBLCLICK它应该表现出他的头衔,但它只是告诉我的最后一个标志的标题:
var checkpoints = [];
function setMarkers(map, locations) {
for (var i in locations) {
var points = new google.maps.LatLng(locations[i][1], locations[i][2]);
checkpoints.push(points);
var marker = new google.maps.Marker({
map: map,
position: points,
title: locations[i][0],
zindex: locations[i][4],
});
//this is my event
google.maps.event.addListener(marker, 'dblclick', function() {
alert("I am marker " + marker.title);
});
}
}
我已经简化了你的代码
function setMarkers(locations) {
for(var i in locations) {
var points = new google.maps.LatLng(locations[i][1].lat,locations[i][2].lng);
checkpoints.push(points);
var marker = new google.maps.Marker({
map:map,
position: points,
icon: 'myicon.png',//
title: locations[i][0],
zindex: locations[i][4]
});
}
}
Mohammadov,你这是它复杂得多,它需要的。
尝试这种情况:
function setMarkers(map, locations) {
for(var i=0; i<locations.length; i++) {
var loc = locations[i];
loc[4] = new google.maps.Marker({
position: new google.maps.LatLng(loc[1], loc[2]),
map: map,
title: loc[0],
zIndex: loc[3]
});
}
}
地图然后应该显示标记,并且locations
阵列的每个成员应与它的标记物的参考来增强,如元素[4]。
主循环内部的两个循环都会导致问题,它们是不必要的,可以避免。同时在循环的最后返回标记将返回只有最后一次,你可以删除它,以及:现在
var checkpoints = [];
function setMarkers(map, locations) {
for (var i=0; i<locations.length; i++)
{
var place = locations[i],
myLatLng = new google.maps.LatLng(place[1], place[2]),
marker = new google.maps.Marker
(
{
position: myLatLng,
map: map,
title: place[0],
zIndex: place[3]
}
);
checkpoints.push({"point": myLatLng, "marker": marker});
}
}
检查站应具备的LatLng
和每个地方的阵列。
感谢@razzak但它仍然没有工作循环仍然是循环1次 – Mohammadov 2013-04-21 14:08:41
注:当我在这里封闭循环:for(VAR I = 0; i
它给出了所有位置 – Mohammadov 2013-04-21 14:15:06
再次感谢你@david它的工作原理,但你应该更新以下几行:var points = new google.maps.LatLng(locations [i] [1 ],地点[i] [2]);和:title:locations [i] [0], zindex:locations [i] [4] – Mohammadov 2013-04-21 15:34:08
我在活动中遇到了一个小问题,它向我展示了相同的标题:google.maps.event.addListener(marker, 'dblclick',函数(){alert(“I am marker”+ marker.title); }); – Mohammadov 2013-04-21 16:22:43
@Mohammadov尝试'alert(“我是标记”+ this.title);' – 2013-04-21 17:45:59