2017-06-21 17 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] = []; }部分。もっと説明してください。 –

関連する問題