Google Maps Api v3 DrawingManager - 不使用drawingControl开始绘图

时间:2014-01-27 22:19:32

标签: javascript google-maps-api-3

我正在用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的情况下以相同的方式创建多边形。请帮帮我!

1 个答案:

答案 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>