Tôi đã tạo một ứng dụng bản đồ sử dụng trình quản lý bản vẽ (và thực hiện các hình dạng có thể chọn); Chương trình hoạt động như sau: khi vẽ xong đa giác sau khi nhấp vào nút một đường dẫn, được ánh xạ trên đa giác.sự kiện sau khi sửa đổi đa giác trong bản đồ google api v3
Khi đa giác được chỉnh sửa sau quá trình này, tôi muốn hàm ánh xạ được gọi lại. Tuy nhiên tôi không thể làm việc này;
Tôi đã thử sử dụng mã sau nhưng tôi luôn gặp lỗi vì chưa có hình dạng nào được chọn khi người nghe này được thêm vào. Tôi có thể làm gì?
google.maps.event.addListener(selectedShape, 'set_at', function() {
console.log("test");
});
google.maps.event.addListener(selectedShape, 'insert_at', function() {
console.log("test");
});
mảnh quan trọng của mã:
function showDrawingManager(){
var managerOptions = {
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [google.maps.drawing.OverlayType.MARKER,google.maps.drawing.OverlayType.POLYLINE,google.maps.drawing.OverlayType.POLYGON]
},
markerOptions: {
editable: true,
icon : '/largeTDGreenIcons/blank.png'
},
polygonOptions: {
fillColor:"#1E90FF",
strokeColor:"#1E90FF",
},
polylineOptions: {
strokeColor:"#FF273A"
}
}
var drawingManager = new google.maps.drawing.DrawingManager(managerOptions);
drawingManager.setMap(map);
return drawingManager;
}
function clearSelection() {
if (selectedShape) {
console.log("clearSelection");
selectedShape.setEditable(false);
selectedShape = null;
numberOfShapes--;
}
}
function setSelection(shape) {
console.log("setSelection");
clearSelection();
selectedShape = shape;
shape.setEditable(true);
numberOfShapes++;
//getInformation(shape);
}
function initialize(){
//....
var drawingManager = showDrawingManager();
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
if (e.type != google.maps.drawing.OverlayType.MARKER) {
// Switch back to non-drawing mode after drawing a shape.
drawingManager.setDrawingMode(null);
// Add an event listener that selects the newly-drawn shape when the user
// mouses down on it.
var newShape = e.overlay;
newShape.type = e.type;
google.maps.event.addListener(newShape, 'click', function() {
setSelection(newShape);
});
setSelection(newShape);
}
});
này có thể làm việc với một số bản đồ, nhưng lưu ý rằng điều này sẽ kích hoạt một số lượng lớn các sự kiện được kích hoạt khi đối tượng đang được kéo ed. Đối với mã của tôi, quá nhiều để xử lý! Vì vậy, tôi phải gắn bó với các sự kiện 'nhấp' và 'kéo'. – jjwdesign
Đối với nhận xét của jjwdesign: Tôi đã có cùng một vấn đề và giải quyết nó bằng cách loại bỏ các trình xử lý sự kiện trên dragstart và thêm chúng một lần nữa vào kéo. Dường như làm việc như một nét duyên dáng trên cái nhìn đầu tiên. – Jochem
newShape.getPath không phải là một hàm. Tôi nhận được lỗi này ... –