Как добавить полилинии в Google Maps? - PullRequest
1 голос
/ 06 января 2012

Я использую 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 (точки), и я вижу, что только первые две координаты пройдены, следовательно, никакая линия не отображается

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Это мой обновленный код для добавления строк одна за другой

для ($ i = 0; $ i <2000; $ i ++) </p>

            {
                $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);";

                }
0 голосов
/ 06 января 2012

Вам необходимо переместить новую деталь 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
}
...