谷歌地图无法添加适当的标记ID

时间:2015-04-08 16:00:14

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

当我的谷歌地图完成加载后,通过我视图中的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个目的地。怎么了?

2 个答案:

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