2016-10-17 2 views
-1

У меня есть карта google, где я могу рисовать круги, прямоугольники и полигоны, а затем сохранять их координаты в базе данных с именем. Теперь я хочу, чтобы каждый раз, когда карта загружалась, все сохраненные области отображались. Я справился с кругами и прямоугольниками (фиксированное число координат), но я застрял в том, как я покажу многоугольник. Я получаю стандартный метод отображения из этого примера треугольника Google: Polygon Arrays. Все хорошо, пока я не достигну этой части:Отображение нескольких многоугольников на Картах Google

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

Я сохраненные многоугольников различных размеров, поэтому каждый раз, когда циклу отображения трасс, мне нужно поместить в triangleCoords различного количества лат и 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); 
} 
} 
+0

Предоставьте [mcve], который демонстрирует проблему, включая образец данных. – geocodezip

+0

Я добавил еще несколько кодов, это помогает? – lena

+0

PHP не особенно полезен без вашей базы данных. Лучше было бы [mcve] (HTML, который служил браузеру, мог бы дать вам отправную точку). – geocodezip

ответ

1

Я сделал это! То, что мне было нужно, - это вставить массив в каждую новую точку многоугольника. Это было просто, но я не имел в виду использование «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; 
} 
Смежные вопросы