2016-10-17 3 views
-1

J'ai une carte google où je peux dessiner des cercles, des rectangles et des polygones, puis enregistrer leurs coordonnées dans une base de données avec un nom. Maintenant, je veux que chaque fois que la carte est chargée, toutes les régions sauvegardées soient affichées. J'ai réussi cela avec les cercles et les rectangles (nombre fixe de coordonnées) mais je suis coincé sur la façon dont je vais afficher le polygone. J'obtiens la méthode standard d'affichage de cet exemple de triangle de Google: Polygon Arrays. Tout est bien jusqu'à ce que je tire cette partie:Affichage de plusieurs polygones sur Google Maps

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

Je sauvé des polygones de différentes tailles, donc chaque fois que la boucle d'affichage fonctionne, je dois mettre en triangleCoords nombre différent de lats et GLE. Je l'ai essayé en utilisant les triangleCoords comme une table mais il a terriblement mal:

    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; 
        } 

Il pourrait être quelque chose de très simple, mais je ne suis pas longtemps dans la programmation et maintenant je reçois plus profond! Pourriez-vous aider? Un indice sur où devrais-je regarder? Un exemple de code? Merci d'avance!

Voici un peu plus de code, cela vous aide-t-il?

<?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

Veuillez fournir un [mcve] qui illustre le problème, y compris un échantillon des données. – geocodezip

+0

J'ai ajouté du code, cela aide-t-il? – lena

+0

Le PHP n'est pas particulièrement utile sans votre base de données. Un [mcve] serait mieux (le HTML servi au navigateur pourrait vous donner un point de départ). – geocodezip

Répondre

1

Je l'ai fait fonctionner! Ce dont j'avais besoin était de pousser dans le tableau chaque nouveau point du polygone. C'était simple mais je n'avais pas en tête l'utilisation de "pousser". Le code suit!

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; 
}