2012-06-12 636 views
0

我想在同谷歌地圖繪製多個多邊形,我需要做的是從一個列表框讀latlngs,他們是這樣說的:谷歌地圖多邊形

LAT1,lng1,1 LAT2,lng2 ,1 lat3,lng3,1 LAT1,lng1,2 LAT2,lng2,2 lat3,lng3,2

和根據該值在合適的(1或2),我將讀取相應latlns和繪製多邊形,實際上我是這樣做的,在我的循環中,多邊形是繪製的,但是有一條線連接它們,我該怎麼辦?,我的意思是,如何繪製多邊形而不連接這條連線?你非常感謝!

這裏是我的代碼:

<script type="text/javascript"> 

     var bermudaTriangle=[]; 
     var places = []; 
     var geoDataSplit; 
     function initialize() { 

      var mapDiv = document.getElementById('map_canvas'); 
      var coords = document.getElementById("selPoly"); 

      var map = new google.maps.Map(mapDiv, { 
       center: new google.maps.LatLng(19.3162200000000, -99.2204930000000), 
       zoom: 12, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 

      var latlng; 

      for (var i = 0; i < coords.options.length; i++) 
       { 
        var geoData = coords.options[i].text; 
        geoDataSplit = geoData.split(","); 
        var counter = geoDataSplit[2]; 

        for (geoDataSplit[2] = 1; geoDataSplit[2] <= 2; geoDataSplit[2]++) 

        { 


         if (counter == geoDataSplit[2]) { 

          latlng = new google.maps.LatLng(parseFloat(geoDataSplit[0]), parseFloat(geoDataSplit[1])); 
          places.push(latlng); 

          bermudaTriangle = new google.maps.Polygon({ 
           paths: places, 
           strokeColor: "#FF0000", 
           strokeOpacity: 0.8, 
           strokeWeight: 2, 
           fillColor: "#FF0000", 
           fillOpacity: 0.35 
          }); 
         } 
        } 
       } 
       bermudaTriangle.setMap(map); 
     } 
     google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
    </head> 


    <body style="font-family: Arial; border: 0 none;"> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ListBox ID="selPoly" runat="server"></asp:ListBox> 
    </div> 
    </form> 

    <div id="map_canvas" style="width: 1024px; height: 768px"></div> 
    </body> 
+0

什麼是精確值由'VAR COORDS =的document.getElementById(「selPoly」)返回' – andresf

+0

是LAT/LNGS的combinatins和Id,例如19.4646565,-99.43435353,1所以我讓拆分得到每個值 – Emilio

回答

0

繪製多邊形是借鑑點(你給隨後的點,也許是你的清單上的第一個和最後一個點)之間的線路。當他們包圍一個空間時 - 你會得到一個多邊形並且空間被填充顏色。這條線總是在後面兩點之間。

如果您想分離多邊形,則必須創建單獨的多邊形(使用new google.maps.Polygon)。如果您所得到的只是一個點的列表,那麼您需要提出或找到一種算法來檢測該空間是否已被封閉,並且應該創建一個新的多邊形。

順便說一下,使用現在的算法,new google.maps.Polygon行可能(也可能應該)在循環之外,按照前面的bermudaTriangle.setMap(map);

OH等待實際上是一種解決方案。或者至少是半解決方案。您可以使線條不可見(strokeOpacity: 0)。多邊形依然會因爲它們的填充可見,或多或少是這樣的: enter image description here