目前,您可以通过单击在地图上绘制多边形或折线,这会创建节点。然而,如果您想跟随一个特定的功能,例如河流或海岸线,这可能既繁琐又不准确。
有人知道是否有一种方法可以通过单击拖动鼠标来绘制路径,或者通过单击开始,然后拖动路径,再次单击停止来绘制路径吗?
我已经查看了DrawingManager和MouseEvent,但是我还没有找到任何有希望的内容。
是否有一种方法可以根据诸如click和mouseMove之类的事件来连接绘图?
这将允许更准确和快速的功能实现。
目前,您可以通过单击在地图上绘制多边形或折线,这会创建节点。然而,如果您想跟随一个特定的功能,例如河流或海岸线,这可能既繁琐又不准确。
有人知道是否有一种方法可以通过单击拖动鼠标来绘制路径,或者通过单击开始,然后拖动路径,再次单击停止来绘制路径吗?
我已经查看了DrawingManager和MouseEvent,但是我还没有找到任何有希望的内容。
是否有一种方法可以根据诸如click和mouseMove之类的事件来连接绘图?
这将允许更准确和快速的功能实现。
onmousedown
在地图上设置draggable
选项为false
,创建一个Polyline
实例,并将Polyline
的clickable
选项设置为false
mousemove
事件,每次事件发生时将返回的LatLng
推入Polyline
的路径onmouseup
删除地图的mousemove
监听器,并将地图的draggable
选项设置回true
。您的Polyline
已完成Polygon
时,现在创建一个Polygon
实例,将Polygon
的路径设置为Polyline
的路径并删除Polyline
<edit>
:
建议仅在按下右键时绘制,否则地图将永远无法拖动。function initialize() {
var mapOptions = {
zoom: 14,
center: new google.maps.LatLng(52.5498783, 13.425209099999961),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
google.maps.event.addDomListener(map.getDiv(), 'mousedown', function(e) {
//do it with the right mouse-button only
if (e.button != 2) return;
//the polygon
poly = new google.maps.Polyline({
map: map,
clickable: false
});
//move-listener
var move = google.maps.event.addListener(map, 'mousemove', function(e) {
poly.getPath().push(e.latLng);
});
//mouseup-listener
google.maps.event.addListenerOnce(map, 'mouseup', function(e) {
google.maps.event.removeListener(move);
if (document.getElementById('overlay').value == 'Polygon') {
var path = poly.getPath();
poly.setMap(null);
poly = new google.maps.Polygon({
map: map,
path: path
});
}
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body {
height: 100%;
margin: 0
}
#map_canvas {
height: 90%;
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
Use the right mouse-button to draw an overlay
<br/>
<select id="overlay">
<option value="Polyline">Polyline</option>
<option value="Polygon">Polygon</option>
</select>
<div id="map_canvas"></div>