当我的谷歌地图完成加载后,通过我视图中的ajax帖子从数据库中获取所有已保存的目的地:
success: function (data) {
for (destination in data) {
var latlng = { lat: data[destination].Latitude, lng: data[destination].Longitude }
console.log(data[destination].Id);
console.log(data[destination]);
var marker = new google.maps.Marker({
map: map,
postion: new google.maps.LatLng(latlng.lat, latlng.lng),
});
marker.set("id", data[destination].Id);
marker.setIcon( /** {google.maps.Icon} */({
url: '/Content/Markers/green_MarkerX.png',
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(35, 35)
}));
marker.setPosition(latlng);
marker.setVisible(true);
google.maps.event.addListener(marker, 'click', function () {
console.log("MARKER");
console.log(marker);
console.log("MarkerID");
console.log(marker.get('id'));
});
}
},
我在第一个console.log中写出目的地的ID,并且工作正常。每个目的地的id都应该写出来。稍后在函数中我将id添加到标记中,这样当我点击它时我将能够找到标记。 但是当我点击我的任何标记时,他们都会得到12的id,因为我的数据库中有12个目的地。怎么了?
答案 0 :(得分:0)
我认为您应该使用'destination.Latitude'来代替'data [destination] .Latitude'。因为“for x in y”遍历y的每个元素并将其设置为x。您将其视为索引。
答案 1 :(得分:0)
您的代码几乎没有变化: 在您的点击中访问您的标记ID作为数据[目的地] .Id。看见代码
google.maps.event.addListener(marker, 'click', function () {
console.log("MarkerID");
console.log(data[destination].Id);
});