给定 Google 地图视图上的一组现有标记位置,如何将这些点添加到折线叠加层?
我正在构建一个网络旅游应用程序,用户可以在其中根据通过 AJAX 调用检索到的一组 GPS 坐标来选择停靠点。这部分工作正常,因为所有点都显示在地图上。
我的问题是我只想将标记位置添加到折线。目前,选定的点被添加到 tourList 数组中,该数组被转换为 JSON 数组并通过 jquery ajax post 调用发布。所以我知道点击事件处理程序正在为一部分工作。
这个问题几乎符合我的需要,除了它是为 Maps API v2 设计的,而且我正在使用 V3。
到目前为止我得到了什么:
//page-specific global variables
var visitPoints = new google.maps.MVCArray();
var polyLine;
var map;
window.onload= function(){
//set initial map location
map = new google.maps.Map(
document.getElementById("map"), mapOptions);
//set up polyline capability
var polyOptions = new google.maps.Polyline({
path: visitPoints,
map: map
});
polyLine = new google.maps.Polyline(polyOptions);
polyLine.setMap(map);
//get all the GPS locations in the database This function and makeMarkers works
//as designed
var request = $.ajax({
type:"GET",
url: "includes/phpscripts.php?action=cords",
dataType:"json",
success: makeMarkers
});
//Populate the map view with the locations and save tour stops in array
function makeMarkers(response){
console.log("Response Length: "+response.length)
for (var i=0; i< response.length; i++){
var marker= new google.maps.Marker({
position: new google.maps.LatLng(response[i].lat, response[i].lon),
map: map,
title: response[i].fileName
});
//anonymous function wrapper to create distinct markers
(function(marker){
google.maps.event.addListener(marker, 'click', function(){
tourList.push(marker); //add marker to tour list
visitPoints.push(marker.latlng); //add location to polyline array
console.log("Tour List length- # stops: "+tourList.length);
});
})(marker);
}
}
//listener for poline click
google.maps.event.addListener(map, 'click', updatePolyline)
} //end onload function
//updates the polyline user selections
function updatePolyline(event){
var path = polyLine.getPath();
path.push(event.latlng);
} //end updatePolyline
目前,我在 Firebug 中没有收到任何脚本警告,但从未调用 updatePolyline 函数。
我是否需要在标记侦听器中添加侦听器来更新折线?