function initMap() {
var markers = [];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: { lat: -33.9, lng: 151.2 },
mapTypeControl: false,
streetViewControl: false
});
bounds = new google.maps.LatLngBounds(null);
@foreach (var item in Model.legs)
{
if (item.Lat != null && item.Long != null)
{
<text>
var myLatLng = {lat: @item.Lat, lng: @item.Long};
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: '@(item.From) - @(item.To)',
icon: '@(Url.Content("~/content/images/Map-Marker.png"))',
});
marker.addListener('click', function() {
marker.setIcon('@(Url.Content("~/content/images/Map-Marker-Blue.png"))');
alert(' @item.Id clicked');
});
bounds.extend(myLatLng);
markers.push(marker);
</text>
}
}
map.fitBounds(bounds);
}
在谷歌地图API上,我需要引发一个ajax弹出窗口(代码中未显示)警报item.id就在它的位置。在标记单击时,警报在显示所选标记的ID时是正确的。这部分很好。
我已经添加了代码,可以在单击标记时将标记图标更改为其他图标,但这会更改最后一个标记的图标。无论点击哪个图标。我做错了什么?
答案 0 :(得分:0)
您应该使用此而不是标记,因为范围链
,您的标记最终将指向最后一个标记func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
if elementName == "reading"{
if attributeDict["type"] == "NPSI_PM25_3HR"{
let PSIValue = attributeDict["value"]! as String
print(i)
switch i {
case 0:
area = "NRS"
nationalPSI = PSIValue
case 1:
area = "North"
case 2:
area = "South"
case 3:
area = "Central"
case 4:
area = "West"
case 5:
area = "East"
default:
area = ""
}
i += 1
print(area, ":", PSIValue)
}
}
}
}
希望它有所帮助。