如何使用坐标数组在谷歌地图 API 中绘制多边形?

Posted

技术标签:

【中文标题】如何使用坐标数组在谷歌地图 API 中绘制多边形?【英文标题】:how to draw a polygon in google map API using array of coordinates? 【发布时间】:2016-07-22 13:27:44 【问题描述】:

我是 javascript 新手,我正在尝试使用 google map API 来绘制多边形。 google.maps.Polygons 函数中的默认路径接受以下格式的 JSON:

 var trianglecoords=[
           lat: 18.466, lng: -66.518,
           lat: 18.466, lng: -66.118,
           lat: 18.166, lng: -66.118,
                 ];

但是我的格式是:

var trianglecoords=[
                   [18.466,-66.518],
                   [18.466,-66.118],
                   [18.166,-66.118],
                         ];

使用我的格式,我看不到地图中的三角形。谁能帮我?

这是我的代码:

function initMap() 
  var map = new google.maps.Map(document.getElementById('map'), 
    zoom: 5,
    center: lat: 24.886, lng: -70.268,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  );

  // Define the LatLng coordinates for the polygon's path.
  var triangleCoords = [
    [25.774, -80.190],
    [18.466, -66.118],
    [32.321,-64.757],
    [25.774, -80.190]
  ];

  // Construct the polygon.
  var bermudaTriangle = new google.maps.Polygon(
    paths: triangleCoords,
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35
  );
  bermudaTriangle.setMap(map);

【问题讨论】:

您的格式无效。您需要将其转换为 google.maps.LatLng 对象或 google.maps.LatLngLiteral 对象的数组。 谢谢!当我添加以下代码来创建 latlng 对象时,它起作用了: var points=[]; for(var i=0;i 【参考方案1】:

您的格式无效。您需要将其转换为 google.maps.LatLng 对象或 google.maps.LatLngLiteral 对象的数组。

要么:

var points=[]; 
for(var i=0; i<triangleCoords.length; i++)  
  points.push(new google.maps.LatLng(triangleCoords[i][0],
                                     triangleCoords[i][1]));

// Construct the polygon.
var bermudaTriangle = new google.maps.Polygon(
  paths: points,
  strokeColor: '#FF0000',
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: '#FF0000',
  fillOpacity: 0.35
);
bermudaTriangle.setMap(map);

或者:

var points=[]; 
for(var i=0; i<triangleCoords.length; i++)  
  points.push(
    lat: triangleCoords[i][0],
    lng: triangleCoords[i][1]
  );

// Construct the polygon.
var bermudaTriangle = new google.maps.Polygon(
  paths: points,
  strokeColor: '#FF0000',
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: '#FF0000',
  fillOpacity: 0.35
);
bermudaTriangle.setMap(map);

代码 sn-p:

function initMap() 
  var map = new google.maps.Map(document.getElementById('map'), 
    zoom: 5,
    center: 
      lat: 24.886,
      lng: -70.268
    ,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  );

  // Define the LatLng coordinates for the polygon's path.
  var triangleCoords = [
    [25.774, -80.190],
    [18.466, -66.118],
    [32.321, -64.757],
    [25.774, -80.190]
  ];
  var points = [];
  for (var i = 0; i < triangleCoords.length; i++) 
    points.push(
      lat: triangleCoords[i][0],
      lng: triangleCoords[i][1]
    );
  
  // Construct the polygon.
  var bermudaTriangle = new google.maps.Polygon(
    paths: points,
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35
  );
  bermudaTriangle.setMap(map);

google.maps.event.addDomListener(window, "load", initMap);
html,
body,
#map 
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map"></div>

【讨论】:

以上是关于如何使用坐标数组在谷歌地图 API 中绘制多边形?的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图上为给定地址绘制多边形

使用 Google Map API v3 绘制多边形和获取坐标 [关闭]

使用 MapKit 框架在谷歌地图上绘制多边形

地理位置 + 谷歌地图 API?

如何使用 Google Maps JavaScript API v3 在谷歌地图中获取查看区域中心的坐标

如何将 kml 多边形几何数据转换为谷歌多边形坐标