【问题标题】:Drawing Polygon in google map using javascript使用javascript在谷歌地图中绘制多边形
【发布时间】:2014-12-28 18:23:23
【问题描述】:

我想在谷歌地图中绘制多边形,我正在使用http://jsfiddle.net/rvsMH/1/ 的示例代码,但它不起作用并且没有得到数组或纬度值。我不知道是什么问题。我是谷歌地图的新手,请帮助任何人。提前致谢。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<!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: 70%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=drawing"></script>
    <script>
var map; // Global declaration of the map
            var iw = new google.maps.InfoWindow(); // Global declaration of the infowindow
            var lat_longs = new Array();
            var markers = new Array();
            var drawingManager;
            function initialize() {
                 var myLatlng = new google.maps.LatLng(40.9403762, -74.1318096);
                var myOptions = {
                    zoom: 13,
                    center: myLatlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP}
                map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
                drawingManager = new google.maps.drawing.DrawingManager({
                drawingMode: google.maps.drawing.OverlayType.POLYGON,
                drawingControl: true,
                drawingControlOptions: {
                    position: google.maps.ControlPosition.TOP_CENTER,
                    drawingModes: [google.maps.drawing.OverlayType.POLYGON]
                },
                        polygonOptions: {
                            editable: true
                        }
            });
            drawingManager.setMap(map);

            google.maps.event.addListener(drawingManager, "overlaycomplete", function(event) {
                var newShape = event.overlay;
                newShape.type = event.type;
            });

            google.maps.event.addListener(drawingManager, "overlaycomplete", function(event){
                overlayClickListener(event.overlay);
                $('#vertices').val(event.overlay.getPath().getArray());
            });
        }
function overlayClickListener(overlay) {
    google.maps.event.addListener(overlay, "mouseup", function(event){
        $('#vertices').val(overlay.getPath().getArray());
    });
}
 initialize();

$(function(){
    $('#save').click(function(){
        //iterate polygon vertices?
    });
});

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <form method="post" accept-charset="utf-8" id="map_form">
    <input type="text" name="vertices" value="" id="vertices"  />
    <input type="button" name="save" value="Save!" id="save"  />
</form>
  </body>
</html>

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    您需要在页面的 DOM 加载后运行初始化函数。当前初始化在渲染 DOM 之前内联运行。使用&lt;body&gt; onload 事件或Google Maps Javascript API v3 addDomListener on window 运行该函数:

    google.maps.event.addDomListener(window, 'load', initialize);
    

    工作代码sn-p:

    var map; // Global declaration of the map
    var iw = new google.maps.InfoWindow(); // Global declaration of the infowindow
    var lat_longs = new Array();
    var markers = new Array();
    var drawingManager;
    
    function initialize() {
      var myLatlng = new google.maps.LatLng(40.9403762, -74.1318096);
      var myOptions = {
        zoom: 13,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }
      map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
      drawingManager = new google.maps.drawing.DrawingManager({
        drawingMode: google.maps.drawing.OverlayType.POLYGON,
        drawingControl: true,
        drawingControlOptions: {
          position: google.maps.ControlPosition.TOP_CENTER,
          drawingModes: [google.maps.drawing.OverlayType.POLYGON]
        },
        polygonOptions: {
          editable: true
        }
      });
      drawingManager.setMap(map);
    
      google.maps.event.addListener(drawingManager, "overlaycomplete", function(event) {
        var newShape = event.overlay;
        newShape.type = event.type;
      });
    
      google.maps.event.addListener(drawingManager, "overlaycomplete", function(event) {
        overlayClickListener(event.overlay);
        $('#vertices').val(event.overlay.getPath().getArray());
      });
    }
    
    function overlayClickListener(overlay) {
      google.maps.event.addListener(overlay, "mouseup", function(event) {
        $('#vertices').val(overlay.getPath().getArray());
      });
    }
    google.maps.event.addDomListener(window, 'load', initialize);
    
    $(function() {
      $('#save').click(function() {
        //iterate polygon vertices?
      });
    });
    html,
    body,
    #map-canvas {
      height: 90%;
      margin: 0px;
      padding: 0px
    }
    <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?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&libraries=drawing"></script>
    <div id="map-canvas"></div>
    <form method="post" accept-charset="utf-8" id="map_form">
      <input type="text" name="vertices" value="" id="vertices" />
      <input type="button" name="save" value="Save!" id="save" />
    </form>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2020-06-28
      相关资源
      最近更新 更多