javascript - 当标记放置在多边形上时如何获取多边形属性

标签 javascript google-maps google-maps-api-3 gmaps.js

使用谷歌地图绘图管理器用户绘制多边形。当标记(来自绘图管理器的标记)放置在其上时,我想获取多边形属性(标题,路径,..)。这里我想知道如何获取多边形的属性(标题,路径),然后将其放入变量中。

代码:

 <html>
 <head>
   <title>Get Latitude and Longitude Coordinates of a Polygon - Google Maps API v3</title>
   <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.17&libraries=drawing&sensor=true"></script>
  <script type="text/javascript" src="gmaps.js"></script>
  <script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js" charset="UTF-8"></script>
<script type="text/javascript">
$(document).ready(function() {
    var mapHeight = '400px';
    $('#map-canvas').css('height', mapHeight);
    mymap = new GMaps({
        div: '#map-canvas',
        lat: 47.53187912201915,
        lng: 7.705222390807307,
        zoom: 20,
        zoomControl: true,
        mapTypeId: 'satellite'
    });
       map = mymap.map;
map_drawingManager = new google.maps.drawing.DrawingManager({
            drawingMode: null,
            drawingControlOptions: {
                position: google.maps.ControlPosition.TOP_LEFT,
                drawingModes: [
                    google.maps.drawing.OverlayType.MARKER,
                    google.maps.drawing.OverlayType.POLYGON
                ]
            },
            //drawingMode: google.maps.drawing.OverlayType.POLYGON,
            markerOptions: {
                draggable: true,
            },

            polylineOptions: {
                editable: true
            },
            map: map
         });

      });  

</script>
</head>
<body>
  <div id="map-canvas" style="height: 350px; width: auto;">
</div>
<div id="info" style="position: absolute; font-family: Arial; font-size: 14px;">
</div>
</body>
</html> 

当我将标记放在多边形上时,显示多边形属性的警报消息就可以了。希望这有可能。

jsfiddle

最佳答案

您需要声明一个数组来保存用户绘制的每个多边形,然后,当用户添加标记时,您需要迭代您的多边形数组,直到找到包含该标记的多边形。这是通过向 Drawingmanager 的 Polygoncomplete 和 MarkerComplete 事件添加监听器来完成的。

var polygonArray=[];

google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
    polygonArray.push(polygon);
});

google.maps.event.addListener(drawingManager, 'markercomplete', function (marker) {
    polygonArray.forEach(function(polygon) {
        if(google.maps.geometry.poly.containsLocation(marker.getPosition(), polygon)) {
            console.log('Marker added inside polygon',polygon);
        }
    });
});

编辑:我在 containsLocation 之后缺少右括号

查看它的工作情况:http://jsfiddle.net/amenadiel/zfvyou0b/

关于javascript - 当标记放置在多边形上时如何获取多边形属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140181/

相关文章:

javascript - Foundation 6 关闭 Canvas 菜单

javascript - 使用 if、else if、else 语句设置变量的最佳方法是什么

javascript - 如何从排序表标题中删除点击

php - 计算两个经度和纬度之间的道路距离

google-maps - 谷歌地图 API : how to check if an address or location is valid?

javascript - 确定点是否在边界框内

javascript - 带有新数据集的动画热图

javascript - 将现有的 JavaScript 对象字符串属性转换为字符串数组?

java - 我如何在我的小程序中使用 JXMapViewer?

google-maps-api-3 - 如何检查点是否在 KML 多边形(GIS Shapefile)中