gpt4 book ai didi

javascript - 单击时提取 drawingManager 多边形路径 Google map

转载 作者:数据小太阳 更新时间:2023-10-29 04:06:20 24 4
gpt4 key购买 nike

我有一个启用了绘图管理器的 Google map ,用户可以在其中绘制多边形并将其保存到我的数据库中。我为 overlaycomplete 事件向 drawingManager 对象添加了一个事件监听器。当事件被触发时,多边形的坐标被写入一个隐藏字段。这很好用 - 唯一的问题是,如果在该点之后拖动/更改单个顶点,则不会触发事件。当用户点击提交并将它们写入隐藏字段时,我需要在(任何)更改时更新字段或遍历多边形顶点。我不太明白如何让它工作,但你可以在这里看到我目前所拥有的:http://jsfiddle.net/5Y4WT/21/

HTML:

<div id="map_canvas" style="width:500px; height:450px;"></div>
<form method="post" accept-charset="utf-8" id="map_form">
<input type="text" name="vertices" value="" id="vertices" />
<input type="button" name="save" value="Save!" id="save" />
</form>

JavaScript:

var map; // Global declaration of the map
var iw = new google.maps.InfoWindow(); // Global declaration of the infowindow
var lat_longs = new Array();
var markers = new Array();
var drawingManager;
function initialize() {
var myLatlng = new google.maps.LatLng(40.9403762, -74.1318096);
var myOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.POLYGON,
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [google.maps.drawing.OverlayType.POLYGON]
},
polygonOptions: {
editable: true
}
});
drawingManager.setMap(map);

google.maps.event.addListener(drawingManager, "overlaycomplete", function(event) {
var newShape = event.overlay;
newShape.type = event.type;
});

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
$('#vertices').val(event.overlay.getPath().getArray());
});
}
initialize();

$(function(){
$('#save').click(function(){
//iterate polygon vertices?
});
});

最佳答案

想通了!!

我添加了函数 overlayClickListener:

function overlayClickListener(overlay) {
google.maps.event.addListener(overlay, "mouseup", function(event){
$('#vertices').val(overlay.getPath().getArray());
});
}

并将其附加到 overlaycomplete 上的叠加层:

google.maps.event.addListener(drawingManager, "overlaycomplete", function(event){
overlayClickListener(event.overlay);
$('#vertices').val(event.overlay.getPath().getArray());
});

有关实际解决方案,请参见此处:http://jsfiddle.net/rvsMH/1/

关于javascript - 单击时提取 drawingManager 多边形路径 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15454919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com