问题描述
最新代码- http://jsfiddle.net/YsQdh/88/-
此版本使用gDouglasPeuker从绘制的版本创建基本的多边形- http://jsfiddle.net/YsQdh/94/
THIS VERSION USES gDouglasPeuker to create a rudamentary polygon shape from the drawn version - http://jsfiddle.net/YsQdh/94/
^这将禁用地图绘制,并在创建形状后再次启用它.
^ this disables the map for drawing, and enables it again after creating the shape.
我正在使用Google Map应用程序.而不是多边形指向并单击运动.我希望能够绘制一个形状-然后将其转换为多边形.
I am working on a google map application. As opposed to a polygon point and click exercise. I want to be able to draw a shape - that is then converted into a polygon.
这是我最新的应用程序- http://jsfiddle.net/Cbk9J/168/
Here is my latest application - http://jsfiddle.net/Cbk9J/168/
我找到了以下代码-但不确定如何将其合并到示例中.我还没有找到可以释放手绘图的文档,并且不确定这些功能是否存在于Google地图绘图管理器中.
I have found the following code - but I am unsure how to incorporate this into the example. I have not found any documentation to free hand drawing and I am unsure if these functions exist in the google maps drawing manager.
var completeFreehand = function (changed) {
if (changed) {
isUserPolygon = true;
updateLocation();
}
unhighlightControls();
showMessages();
updateListingResults();
};
var completeDelete = function() {
map.endDeleteSearchArea();
unhighlightControls();
showMessages();
};
var cancelDelete = function() {
if (map.isDeletingSearchArea()) {
completeDelete();
updateListingResults();
enableControls();
}
return false;
};
var cancelFreehand = function () {
if (map.isDrawingFreehand()) {
map.cancelFreehand();
completeFreehand();
enableControls();
}
};
var clearMap = function (silent) {
map.clearSearchArea(silent);
mostRecentPinCount = 0;
enableControls();
map.clearMarkers(true);
return false;
};
var drawFreehand = function (element) {
if (map.isDrawingFreehand()) {
cancelFreehand();
return;
} else if (map.isDeletingSearchArea()) {
completeDelete();
}
disableControls(true);
highlightControl(element);
hideMessages();
if ( $(element).hasClass('js-maps-btn-add') ) {
$('.js-maps-status-message-draw').removeClass('is-hidden');
} else {
$('.js-maps-status-message-new').removeClass('is-hidden');
}
map.clearMarkers();
map.drawFreehand(completeFreehand);
updateBasePolygon();
return false;
};
function updateBasePolygon () {
if (typeof(basePolygon) == 'undefined') {
var polys = map.getPolygons();
if (polys.length) {
basePolygon = $.map(polys, function (val, i) {
var a = val.getPath().getArray();
return [
$.map(a, function (val, i) {
return [[ val.lat(), val.lng() ]];
})
];
});
}
}
}
推荐答案
function drawFreeHand()
{
//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);
var path=poly.getPath();
poly.setMap(null);
poly=new google.maps.Polygon({map:map,path:path});
google.maps.event.clearListeners(map.getDiv(), 'mousedown');
enable()
});
}
function disable(){
map.setOptions({
draggable: false,
zoomControl: false,
scrollwheel: false,
disableDoubleClickZoom: false
});
}
function enable(){
map.setOptions({
draggable: true,
zoomControl: true,
scrollwheel: true,
disableDoubleClickZoom: true
});
}
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);
//draw
$("#drawpoly a").click(function(e) {
e.preventDefault();
disable()
google.maps.event.addDomListener(map.getDiv(),'mousedown',function(e){
drawFreeHand()
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
html,body{height:100%;margin:0}
#map_canvas{height:500px; width:100%;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry,places&ext=.js"></script>
<div id="drawpoly"><a href="#">Click Here To Draw On Map</a></div>
<div id="map_canvas"></div>
这篇关于徒手绘制Google Map Drawing的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!