如何将折线添加到Google地图?

时间:2012-01-06 06:08:30

标签: javascript google-maps-api-2

我正在使用Google Maps API。我试图从数据库添加折线和坐标。谁能告诉我如何使用标记管理器添加折线?我想我的坐标太多而且它变得很乱。使用标记管理器可能有所帮助。有什么建议吗? 我正在使用的代码是:

for ($i=0;$i<$truckCount;$i++)
            {
                $j=0;
        $k=1;
                do
                {
                    $data = pg_fetch_row($result,$j);
            $data1=pg_fetch_row($result,$k);
                    $j++;
            $k++;
                }while(condition)
                echo"points[$i]=[new GLatLng($data[4], $data[5]),new GLatLng($data1[4], $data1[5])];";
        echo"polyline= new GPolyline(points,'#0000FF', 6, 0.5);";
        echo "setTimeout(function() {map.addOverlay(polyline);},2);";

            }

我使用了GLog.write(points),我看到只有前两个坐标被传递,因此没有绘制线

2 个答案:

答案 0 :(得分:0)

您需要在循环外移动新的GPolyline部件。因此,您要将每个坐标添加到数组中,然后在最后使用整个数组创建折线。

for(i=0;i<till data;i++)
{
  $data=pg_fetch_row($result,$i);
  points[$i]= new GLatLng($data[4],$data[5]); // Lat,Long coordinates are at 5th and 6th column
}

var polyline = new GPolyline(points,color,4,1);
map.addOverlay(polyline);

更新:或者,如果您想要一次绘制一行的每个片段,您可以尝试创建一个只有2个坐标的新数组:起始点和单个细分的终点。这次你需要循环到array.length-1(不知道你需要如何修改你的PHP数组,所以我会用纯Javascript语法写一些东西 - 你需要修改回PHP)

var coordinates = // your data array;
var points,polyline;

for(i=0;i < coordinates.length-1; i++) {
  // recreate the array
  points = [];

  // add the first coordinate
  points[0]= new GLatLng(coordinates[i].lat,coordinates[i].lon); 

  // add the 2nd coordinate
  points[1]= new GLatLng(coordinates[i+1].lat,coordinates[i+1].lon);

  polyline = new GPolyline(points,color,4,1);
  map.addOverlay(polyline);

  // at this point here you could add a setTimeout if still required
}

答案 1 :(得分:0)

这是我逐个添加行的更新代码

for($ i = 0; $ i&lt; 2000; $ i ++)

            {
                $data1 = pg_fetch_row($result,$i);
                $data2 = pg_fetch_row($result,$i+1);
                echo "points[$i] = newGLatLng($data1[4], $data1[5]);\n";
                echo "points[$i+1] = newGLatLng($data2[4],$data2[5]);\n";
                echo" var polyline = new GPolyline(points,'#0000FF', 6, 0.5);";
                echo "setTimeout(function() {map.addOverlay(polyline);},2);";

                }