【发布时间】:2016-01-21 14:49:01
【问题描述】:
我正在开发一个使用 Google Maps API v3 的网络应用程序。我在一小时内创建了大约 400 个标记,这些标记被推送到 currentDisplayedMarkers[] 中。对于每个标记,我正在创建一个包含其过去位置的折线。这工作正常。但是,我只想在单击特定标记时显示标记的折线。我创建了一个名为 addClickHandler 的函数,在其中我为每个标记定义了 onClick 侦听器。单击标记时,应将折线添加到地图中。
当我单击标记时,折线未显示在地图上。 你对我做错了什么有任何想法吗?
if (!found)
{
var LatLng = { lat: data[i].Plots[0].Latitude, lng: data[i].Plots[0].Longitude };
createMarker(LatLng, 90, data[i].TrackNumber);
drawPolyline(data[i].Plots);
}
function createMarker(markerLatLng, direction, id) {
var iconImage = {
path: 'M265.54,0H13.259C5.939,0,0.003,5.936,0.003,13.256v252.287c0,7.32,5.936,13.256,13.256,13.256H265.54c7.318,0,13.256-5.936,13.256-13.256V13.255C278.796,5.935,272.86,0,265.54,0z M252.284,252.287H26.515V26.511h225.769V252.287z',
strokeColor: '#800000',
scale: 0.05,
fillOpacity: 1,
strokeWeight: 1
}
//draw the marker and attach it to the map
marker = new google.maps.Marker({
position: markerLatLng,
map: map,
icon: iconImage,
draggable: false
});
//add aditional properties to the marker
marker.metadata = {
id: id
};
//add the marker to the markers array
currentlyDisplayedMarkers.push(marker);
for (var j = 0; j < currentlyDisplayedMarkers.length; j++) {
var pathMarker = currentlyDisplayedMarkers[j];
addClickHandler(pathMarker);
}
}
function addClickHandler(pathMarker) {
google.maps.event.addListener(pathMarker, 'click', function () {
flightPath.setMap(map);
});
}
【问题讨论】:
-
请提供一个Minimal, Complete, Tested and Readable example 来证明这个问题。
-
如果我要显示更多代码,那就太多了。如果您对此事感兴趣,代码已经过测试并且在我看来足够可读。如果我提供完整的代码,我还必须发布数据源,这恐怕是不可能的。
-
提供运行代码的测试数据,不一定是“真实”数据。
-
我认为任何有足够经验的人都会很容易地“看到”这个问题。我很确定任何类型的调试在这里都是无用的,所以我看不出提供更多信息的意义。在我看来,对我的问题的帮助只能来自以前见过这种情况的人。
标签: javascript jquery google-maps-api-3 google-maps-markers google-polyline