2012-06-12 373 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