我正在使用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),我看到只有前两个坐标被传递,因此没有绘制线
答案 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);";
}