我有点坚持让保存的折线再次可编辑。目前,我已将点存储在 mysql 数据库中,并且可以使用自定义标记再次显示路线/折线。
现在我喜欢折线再次可编辑,为此我正在研究: http: //www.birdtheme.org/useful/v3tool.html
我遇到的问题:
- 我无法让已经保存的点/标记像刚刚放置在地图上一样。例如,这些点不能拖放。可以拾取标记,但我无法再次将其放在地图上(我已经尝试过事件 dragend)。
- 我不想要中间标记,只想要移动标记、添加和删除标记的能力
目前我的启动功能如下所示:
function startEditing(){
if(editing === true){
stopediting();
}else{
routeCoords = theRoute.getPath();
//remove custom icons
//setAllMap(null);
if(routeCoords.length > 0){
for(var i = 0; i < routeCoords.length; i++) {
var marker = setmarkers(routeCoords.getAt(i));
//alert("marker: "+marker);
markers.push(marker);
/*if(i > 0) {
var midmarker = setmidmarkers(routeCoords.getAt(i));
midmarkers.push(midmarker);
}*/
}
editing = true;
jQuery('#btnEditing').removeClass('green');
jQuery('#btnEditing').val('Stop Editing').addClass('red');
}
}
}
和功能 setmarkers 看起来像
function setmarkers(point){
var marker = new google.maps.Marker({
position: point,
map: map,
icon: imageNormal,
raiseOnDrag: false,
draggable: true
});
google.maps.event.addListener(marker, "mouseover", function() {
marker.setIcon(imageHover);
});
google.maps.event.addListener(marker, "mouseout", function() {
marker.setIcon(imageNormal);
});
google.maps.event.addListener(marker, "drag", function() {
for (var i = 0; i < markers.length; i++) {
if (markers[i] === marker) {
theRoute.getPath().setAt(i, marker.getPosition());
movemidmarker(i);
//movemarker(i);
break;
}
}
routeCoords = theRoute.getPath();
var stringtobesaved = marker.getPosition().lat().toFixed(6) + ',' + marker.getPosition().lng().toFixed(6);
pointsArray.splice(i,1,stringtobesaved);
});
////#end markers van DB
google.maps.event.addListener(marker, "click", function() {
for (var i = 0; i < markers.length; i++) {
if (markers[i] === marker && markers.length !== 1) {
marker.setMap(null);
markers.splice(i, 1);
theRoute.getPath().removeAt(i);
removemidmarker(i);
break;
}
}
routeCoords = theRoute.getPath();
if(markers.length > 0) {
pointsArray.splice(i,1);
}
});
return marker;
}
有什么建议么?