多个多边形显示在谷歌地图上

Multiple Polygons display on Google Maps

本文关键字:谷歌地图 显示 多边形      更新时间:2023-09-26

我有一个谷歌地图,在那里我可以画圆,矩形和多边形,然后保存它们的坐标在一个数据库中的名称。现在我希望每次加载地图时都显示所有保存的区域。我已经用圆圈和矩形(固定数量的坐标)管理了这一点,但我被困在我将如何显示多边形。我得到从这个谷歌三角形的例子显示的标准方法:多边形数组。一切都很好,直到我到达这部分:

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

我保存了不同大小的多边形,所以每次显示循环运行时,我需要在trianglecoord中放入不同数量的lats和lgs。我尝试使用trianglecoord作为表,但它出现了严重的错误:

                    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); 
}
}

我成功了!我需要做的是将多边形的每个新点都放入数组中。它很简单,但我没有想到"push"的用法。代码如下!

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;
}