Google地图标记事件点击问题

时间:2016-08-26 14:06:06

标签: javascript jquery google-maps-api-3

 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时是正确的。这部分很好。

我已经添加了代码,可以在单击标记时将标记图标更改为其他图标,但这会更改最后一个标记的图标。无论点击哪个图标。我做错了什么?

1 个答案:

答案 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)
        }

    }
}

}

希望它有所帮助。