如何使用Google Maps API V3显示多边形和多边形

瓦伦·库马尔

我是google maps api的新手,我有一些多边形和多边形。我想在Google Maps API中同时显示(多边形和折线)。我尝试了一些东西,但无法同时显示多边形和折线,仅显示多边形,如何同时显示多边形和折线。我有一个Json,json具有源多边形或折线,我在这里显示基于源的多边形。对不起我的英语不好。
希望有人可以让我知道我失败的地方。这是我的代码。演示版

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry,places&sensor=true"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div style="height: 450px;" id="map-canvas"></div>
<script>
$(function(){
    initialize();
});

function initialize() {
    var centerPoint = new google.maps.LatLng(13.09084815771412,80.26878878474236);
    var mapOptions = {
        zoom: 14,
        center: centerPoint,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scaleControl: true,
        mapTypeControl: false
    };

    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    var arr = new Array();
    var polygons = [];
    var polyline = [];
    var bounds = new google.maps.LatLngBounds();
    var coordinates = [];
    var marker = new google.maps.Marker;
    var getBounds;


    var data = '[{"name":"Arumbakkam","id":"1620","source":"polygon","latlng":[{"lat":"13.080648730311745","lng":"80.2668146789074"},{"lat":"13.081819177841483","lng":"80.27453944087029"},{"lat":"13.086208306590859","lng":"80.27172848582268"},{"lat":"13.09084815771412","lng":"80.26878878474236"},{"lat":"","lng":null}]},{"name":"Chetpet","id":"1621","source":"polyline","latlng":[{"lat":"13.119271","lng":"80.095053"},{"lat":"13.117557","lng":"80.095203"},{"lat":"13.116408","lng":"80.101683"}]}]';
    var jsonData = JSON.parse(data);
    for (var i = 0; i < jsonData.length; i++) {
        var polName = jsonData[i].name;
        var id = jsonData[i].id;
        var latArr = jsonData[i].latlng;
        var source_d = jsonData[i].source;
        arr = [];
        for (j = 0; j < latArr.length; j++) {
            var lat = latArr[j].lat;
            var lng = latArr[j].lng;

            arr.push(new google.maps.LatLng(parseFloat(lat), parseFloat(lng)));
            bounds.extend(arr[arr.length - 1]);
        }

       if(source_d == "polygon"){

        polygons.push(new google.maps.Polygon({
            auto_id: i,
            id: id,
            name: polName,
            paths: arr,
            Source: source_d,
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillOpacity: 0.35,
            zIndex: 10
        }));
        console.log(id+" polygons name="+polName);
        polygons[polygons.length - 1].setMap(map);

       }else if (source_d == "polyline") {  
             polyline.push(new google.maps.Polyline({
                auto_id: i,
                id: id,
                name: polName,
                paths: arr,
                Source: source_d,
                strokeOpacity: 0.8,
                strokeWeight: 2,
                 zIndex: 11
            }));
            polyline[polyline.length - 1].setMap(map);
           console.log(id+" polyline  name="+polName);
      }  

    }
}

</script>
地理编码

一个google.maps.PolylineOptions对象不具有一个paths特性,那就是只对一个google.maps.PolygonOptions对象。

改变:

polyline.push(new google.maps.Polyline({
    auto_id: i,
    id: id,
    name: polName,
    paths: arr,
    Source: source_d,
    strokeOpacity: 0.8,
    strokeWeight: 2,
    zIndex: 11
  }));

至:

polyline.push(new google.maps.Polyline({
    auto_id: i,
    id: id,
    name: polName,
    path: arr,
    Source: source_d,
    strokeOpacity: 0.8,
    strokeWeight: 2,
    zIndex: 11
  }));

概念证明

代码段:

$(function() {
  initialize();
});

function initialize() {
  var centerPoint = new google.maps.LatLng(13.09084815771412, 80.26878878474236);
  var mapOptions = {
    zoom: 14,
    center: centerPoint,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    scaleControl: true,
    mapTypeControl: false
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
  var arr = new Array();
  var polygons = [];
  var polyline = [];
  var bounds = new google.maps.LatLngBounds();
  var coordinates = [];
  var marker = new google.maps.Marker;
  var getBounds;


  var data = '[{"name":"Arumbakkam","id":"1620","source":"polygon","latlng":[{"lat":"13.080648730311745","lng":"80.2668146789074"},{"lat":"13.081819177841483","lng":"80.27453944087029"},{"lat":"13.086208306590859","lng":"80.27172848582268"},{"lat":"13.09084815771412","lng":"80.26878878474236"}]},{"name":"Chetpet","id":"1621","source":"polyline","latlng":[{"lat":"13.119271","lng":"80.095053"},{"lat":"13.117557","lng":"80.095203"},{"lat":"13.116408","lng":"80.101683"}]}]';
  var jsonData = JSON.parse(data);
  for (var i = 0; i < jsonData.length; i++) {
    var polName = jsonData[i].name;
    var id = jsonData[i].id;
    var latArr = jsonData[i].latlng;
    var source_d = jsonData[i].source;
    arr = [];
    for (j = 0; j < latArr.length; j++) {
      var lat = latArr[j].lat;
      var lng = latArr[j].lng;

      arr.push(new google.maps.LatLng(parseFloat(lat), parseFloat(lng)));
      bounds.extend(arr[arr.length - 1]);
    }

    if (source_d == "polygon") {

      polygons.push(new google.maps.Polygon({
        auto_id: i,
        id: id,
        name: polName,
        paths: arr,
        Source: source_d,
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillOpacity: 0.35,
        zIndex: 10
      }));
      console.log(id + " polygons name=" + polName);
      polygons[polygons.length - 1].setMap(map);

    } else if (source_d == "polyline") {
      polyline.push(new google.maps.Polyline({
        auto_id: i,
        id: id,
        name: polName,
        path: arr,
        Source: source_d,
        strokeOpacity: 0.8,
        strokeWeight: 2,
        zIndex: 11
      }));
      polyline[polyline.length - 1].setMap(map);
      console.log(id + " polyline  name=" + polName);
    }

  }
  map.fitBounds(bounds);
}
html,
body,
#map-canvas {
  height: 100%;
  width: 100%;
  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"></script>
<div id="map-canvas"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Maps API v3不使用多边形突出显示国家边界

使用Google Maps API v3相交多边形和折线

Google Maps JS API v3 - 如何检查和显示多边形点之间的距离

带有GeoJson多边形层的google maps v3 API鼠标悬停

Google Maps Api将多边形更改为圆形

绘制多边形时,Google Maps API v3在撤消按钮旁边添加另一个按钮

如何在Google Maps v3中获取要素多边形几何的LatLngBounds?

Google Maps v3从MySQL数据库解码多边形

Google MAPS API中的多个多边形和多个标记

获取多边形所有点的数组-Google Maps Drawing Tool API-3

如何在Google Maps API中使用多边形字符串

Google Map API v3:单击按钮时使多边形不可编辑

点击时google maps多边形,显示多边形内标记的摘要

如何在Google Maps API中触发开始多边形绘图?

如何在Google Maps Javascript API中计算多个多边形的中心?

如何在Google Static Maps API中创建一个带孔的多边形?

如何在Google Maps API中从多边形中排除区域

使用Android中的Google Maps API检查点是否在多边形中

OSM到Google Maps多边形

将Google Maps JS API ImageMapType裁剪为多边形

在Google Maps API中获取以米为单位的多边形长度

Google Maps API多边形中的fillColor不起作用

带有Google Maps API多边形的Javascript超时功能

Google Maps Api 将我的多边形(矩形)绘制为平行四边形

Google Maps:如何从SVG路径创建多边形

如何在使用Google Map API时显示多边形标题

Google Maps API 绘图管理器:删除双击以关闭多边形或更改灵敏度

具有旋转/增长/缩小/顺序选项的多边形内的Google Maps API缠绕路径

react-google-maps 中带孔的多边形