如何在Google Map API中使用坐标数组绘制多边形?

Sam*_*gol 1 javascript json polygon geospatial google-maps-api-3

我是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},
                 ];
Run Code Online (Sandbox Code Playgroud)

但是我的格式是:

var trianglecoords=[
                   [18.466,-66.518],
                   [18.466,-66.118],
                   [18.166,-66.118],
                         ];
Run Code Online (Sandbox Code Playgroud)

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

这是我的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

geo*_*zip 7

您的格式无效。您需要将其转换为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);
Run Code Online (Sandbox Code Playgroud)

要么:

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);
Run Code Online (Sandbox Code Playgroud)

代码段:

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);
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)