【问题标题】:Multiple Polygons display on Google Maps谷歌地图上显示多个多边形
【发布时间】:2016-10-17 10:42:04
【问题描述】:

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

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

我已经保存了不同大小的多边形,所以每次显示循环运行时,我都需要在 triangleCoords 中放入不同数量的 lats 和 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); 
}
}

【问题讨论】:

  • 请提供证明问题的minimal reproducible example,包括数据样本。
  • 我添加了更多代码,有帮助吗?
  • 如果没有您的数据库,PHP 并不是特别有用。 minimal reproducible example 会更好(提供给浏览器的 HTML 可能会给你一个起点)。
  • 我不明白你问什么,我想我的问题很清楚我提供的数据。如何使用不同数量的 lats 和 lngs 在每个循环中填充 triangleCoords 表?如果有人可以解释我应该工作的方式或我应该搜索的方向,我可以不用代码。我可能没有用正确的方式搜索它,即使是正确的搜索词也会有所帮助!
  • 您试图填充trianglCoords 变量的那些坐标是什么样的?我可以猜到,但如果我错了,那会浪费我的时间。你有一个你想要结果的样本,但没有输入数据的样子。你看我提供的the link了吗?

标签: javascript google-maps maps coordinates polygon


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多