【发布时间】:2014-05-10 15:17:33
【问题描述】:
最新代码 - http://jsfiddle.net/YsQdh/88/ -
这个版本使用 gDouglasPeuker 从绘制的版本创建一个基本的多边形形状 - http://jsfiddle.net/YsQdh/94/
^ 这将禁用地图进行绘制,并在创建形状后再次启用它。
我正在开发一个谷歌地图应用程序。与多边形点和单击练习相反。我希望能够绘制一个形状 - 然后将其转换为多边形。
这是我最新的申请 - http://jsfiddle.net/Cbk9J/168/
我找到了以下代码 - 但我不确定如何将其合并到示例中。我没有找到任何免费手绘的文档,我不确定这些功能是否存在于谷歌地图绘图管理器中。
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() ]];
})
];
});
}
}
}
【问题讨论】:
-
等一下 - 这是一个绘制折线的例子 - jsfiddle.net/doktormolle/YsQdh
-
改进了监听器控件 - jsfiddle.net/YsQdh/88
-
这是最终应用程序的大量混搭 - jsfiddle.net/Cbk9J/175
-
现在添加了 gDouglasPeuker 算法来简化绘制后的多边形jsfiddle.net/Cbk9J/188
-
jsfiddle.net/YsQdh/94 - 此代码示例的最新版本