我正在用google maps api v3构建一个geofencing api。我从MapToolbar代码开始: http://nettique.free.fr/gmap/toolbar.html
我喜欢它,因为它很容易定制,比如更改图标和调用函数的所有方式。我只使用多边形工具,我不喜欢你添加一个点时不能制作凸角的事实(只有在你编辑之后)。
如果使用drawingManager工具,则可以执行此操作,因为只有在完成绘图后才创建多边形: https://developers.google.com/maps/documentation/javascript/examples/drawing-tools
但我不喜欢默认图标,我认为调用函数的方式并不是真正用户友好。问题是我无法自己调用这些函数。
所以,我正在寻找一种方法来开始绘图而不使用默认的绘图控件就像调用正确的函数一样简单,但我找不到它!或者我可以在不使用drawingManager的情况下以相同的方式创建多边形。请帮帮我!
答案 0 :(得分:0)
我找到了!如果要隐藏控制菜单,请使用drawingControl: false
,如果要更改绘图模式,请使用setDrawingMode()
,如下所述:
https://developers.google.com/maps/documentation/javascript/reference#DrawingManager
所以,这是从多边形绘制模式开始的新代码:
<!DOCTYPE html>
<html>
<head>
<title>Drawing tools</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=drawing"></script>
<script>
// ColorLuminance() is a little extra to have your strokeColor
// darker than your fillColor
function ColorLuminance(hex, lum) {
// validate hex string
hex = String(hex).replace(/[^0-9a-f]/gi, '');
if (hex.length < 6) {
hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];
}
lum = lum || 0;
// convert to decimal and change luminosity
var rgb = "#", c, i;
for (i = 0; i < 3; i++) {
c = parseInt(hex.substr(i*2,2), 16);
c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);
rgb += ("00"+c).substr(c.length);
}
return rgb;
}
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
var drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.POLYGON,
drawingControl: false,
polygonOptions: {
strokeWeight: 2,
strokeColor: ColorLuminance("#FF0000", -0.6),
strokeOpacity: 0.9,
fillColor: "#FF0000",
fillOpacity: 0.3
}
});
drawingManager.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>