2016-10-17 52 views
-1

我有一個谷歌地圖,可以繪製圓形,矩形和多邊形,然後將它們的座標保存在名稱數據庫中。現在我希望每次地圖都會加載所有保存的區域以進​​行顯示。我已經用圓和矩形(固定數量的座標)管理了這個,但我堅持要如何顯示多邊形。我從這個谷歌三角示例中獲得顯示的標準方法:Polygon Arrays。不同尺寸的在Google地圖上顯示多個多邊形

var triangleCoords = [ 
     {lat: 25.774, lng: -80.190}, 
     {lat: 18.466, lng: -66.118}, 
     {lat: 32.321, lng: -64.757} 
    ]; 

我已保存的多邊形,所以顯示運行的循環,我需要投入triangleCoords不同數量拉特和LNGS的每一次:直到我達到這個部分 一切都很好。我試了一下使用triangleCoords作爲一個表,但它去可怕的錯誤:

    var j=1; 
        var k; 
        for (k = 0; k < (coo.length)/2 ; k++){ 
         var triangleCoords[k] = [ 
          {lat: coo[j], lng: coo[j+1]} 
         ]; 
         j+=2; 
        } 

這可能是很簡單的東西,但我不長成編程,現在我越來越深!你能幫忙嗎?任何暗示我應該在哪裏看?一些示例代碼?提前致謝!

這是一些更多的代碼,這有幫助嗎?

<?php 
       $result2 = mysql_query("SELECT * FROM allplaces WHERE user_id = '$userid' "); 

        $coordinates = array(); 
        while ($row = mysql_fetch_array($result2)) {  
        $coordinates[] = $row['coordinates']; 
        } 
       ?> 
var coordinates = new Array(); 
    <?php 
       for ($i=0;$i<count($coordinates); $i++) 
       { 
        echo "coordinates[$i]='".$coordinates[$i]."';\n"; 
       } 
?> 
var i; 
    for (i = 0; i < coordinates.length; i++) { 

        var str = coordinates[i]; 
       var coo = str.split(";"); //first cell of coo is empty 

if (type[i] == 1){   //polygon 

        // Define the LatLng coordinates for the polygon's path. 

    --> [code here that fills the triangleCoords each time, where triangleCoords must have the form that is given in the first Code Sample] 

        // 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); 
} 
} 
+0

請提供一個演示此問題的[mcve],其中包括一個數據樣本。 – geocodezip

+0

我增加了一些代碼,這有幫助嗎? – lena

+0

沒有你的數據庫,PHP並不是特別有用。 [mcve]會更好(提供給瀏覽器的HTML可能會給你一個起點)。 – geocodezip

回答

1

我做到了!我需要將多邊形的每個新點都推入數組中。這很簡單,但我並沒有考慮使用「推」。代碼如下!

var bermudaTriangle = []; 
var j; 
var k=1; 
for (j=0; j < (coo.length)/2 ; j++){ 
    bermudaTriangle.push(new google.maps.LatLng(coo[k],coo[k+1])); 
    k+=2; 
} 
相關問題