2017-06-21 49 views
-1

我想在Google地图中显示多个多边形。我有一个下面的对象。如何在地图中显示多个多边形

var triangleCoords = [ 
    {lat: 25.774, lng: -80.190, 'name': 's'}, 
    {lat: 18.466, lng: -66.118, 'name': 's'}, 
    {lat: 32.321, lng: -64.757, 'name': 'a'}, 
    {lat: 25.774, lng: -80.190, 'name': 'a'}, 
    {lat: 32.451, lng: -64.797, 'name': 'c'}, 
    {lat: 26.774, lng: -80.190, 'name': 'c'} 
]; 

从上面给出的坐标我必须根据名称进行过滤。同名的值应该是单个多边形,所以在这种情况下,我应该有3个多边形。我不知道如何打破这个triangleCoords,以便我可以制作一个循环,并使用下面的代码来显示它。

var bermudaTriangle = new google.maps.Polygon({ 
    paths: triangleCoords, 
    strokeColor: '#FF0000', 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: '#FF0000', 
    fillOpacity: 0.35 
}); 
+0

不知道这是如何工作的,但不应该有一个三角形有3个坐标吗? –

+0

@BrianH。是的,它可以有3个以上的坐标。但我只在这里发布2。 –

回答

1

请尝试以下代码在Google地图上创建多个多边形。

var map; 
function initialize() { 

    var mapOptions = { 
     center: new google.maps.LatLng(30.653456, 76.732375), 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    var infoWindow = new google.maps.InfoWindow(); 
    map = new google.maps.Map(document.getElementById("map"), mapOptions); 
} 

var triangleCoords = [ 
{ lat:30.655993, lng: 76.732375, 'name': 's' }, 
{ lat: 30.651379, lng: 76.735808, 'name': 's' }, 
{ lat: 30.653456, lng: 76.729682, 'name': 's' }, 
{ lat: 30.687375, lng: 76.749161, 'name': 'b' }, 
{ lat: 30.681425, lng: 76.754381, 'name': 'b' }, 
{ lat: 30.674744, lng: 76.742606, 'name': 'b' }, 
{ lat: 30.680694, lng: 76.737873, 'name': 'b' } 
    ]; 

    function SortByName(x, y) { 
     return ((x.name == y.name) ? 0 : ((x.name > y.name) ? 1 : -1)); 
    } 

    // Call Sort By Name 
    triangleCoords.sort(SortByName); 
    var polygroups = {}; 
    for (var i = 0; i < triangleCoords.length; i++) { 
     var groupName = triangleCoords[i].name; 
     if (!polygroups[groupName]) { 
      polygroups[groupName] = []; 
     } 
     polygroups[groupName].push({ lat: triangleCoords[i].lat, lng: triangleCoords[i].lng}); 
    } 

    $.each(polygroups, function (i, value) { 
     debugger; 
     var bermudaTriangle = new google.maps.Polygon({ 
      paths: value, 
      strokeColor: '#FF0000', 
      strokeOpacity: 0.8, 
      strokeWeight: 2, 
      fillColor: '#FF0000', 
      fillOpacity: 0.35 
     }); 
     bermudaTriangle.setMap(map); 
    }); 
+0

非常感谢。我有点困惑在iif(!polygroups [groupName]){ polygroups [groupName] = []; }部分。你能解释更多吗? –