2012-08-05 4 views
2

Je tente de créer une carte dynamique à l'aide de la dernière API Google Map. Tout va bien jusqu'à présent. J'ai bien sûr une question:Google Maps - Enregistrement d'une carte dynamique

Comment est-ce que je pourrais faire pour sauvegarder ma carte actuelle? Imaginons que vous construisiez une carte avec des marqueurs dynamiques: Puisque tout se fait via JavaScript, j'ai besoin d'obtenir/définir ces valeurs à partir d'un fichier/base de données.

Je pensais sortir l'ensemble de google.map.Markers en JSON et l'envoyer à une base de données sous la forme d'une chaîne, mais si j'ai environ 100 places, je ne suis pas sûr que ça irait bien et je Je suis inquiet pour l'efficacité.

Est-ce la seule façon de le faire et je pense bien? Fondamentalement, les utilisateurs de votre site Web sont autorisés à placer un marqueur sur la carte, qui sont ensuite soumis à la confirmation bien sûr. Une fois qu'il est confirmé, ce marqueur doit être dans la dernière "version" de la carte, donc je dois obtenir cette information de/dans une base de données/fichier.

Merci d'avance!

Répondre

3

Je crée une application similaire et je l'ai mis en œuvre ainsi:

J'ai une table Marker qui comporte des colonnes pour chaque attribut que j'utilise des marqueurs (par exemple, latitude, longitude, nom, description, le type , etc.) Quand quelqu'un ajoute un marqueur, je sauvegarde simplement les attributs du marqueur dans la base de données. La prochaine fois que je veux montrer le marqueur, je viens d'obtenir les attributs de la base de données, les encoder en JSON et les attacher à la page. Dans la page intérieure, j'ai le JS qui saisit ces attributs et crée les marqueurs dans la carte. Pseudocode:

//this is generated dynamically from DB. 
var markers = [ 
       {lat:115416,lng:26411}, 
       {lat:115416,lng:26411} 
       ]; 

//this is static, just grabs the dynamic bit and puts it on the map: 
for (var i = 0; i < markers.length; i++){ 
    //creates a marker object 
    var marker = new Marker({lat:markers[i].lat, lng:markers[i].lng }) 
    //displays it on the map 
    map.addMarker(marker); 
} 

l'avantage de ceci est que vos données dans la base de données sont indépendantes de la mise en œuvre de la carte, par ex. Si à l'avenir vous décidez de passer à des cartes Apple et qu'il a une implémentation différente, vous pouvez simplement écrire des JS différents pour gérer les données. Vous pouvez également effectuer une requête dessus, par ex. vous pouvez demander des endroits qui sont proches en regardant lat et lang, etc.

+0

Merci pour votre réponse valentina. Je suis loin derrière dans mon développement, mais votre perspicacité correspond à ce que j'attendais. Bien que ce soit une bonne idée de garder les options de marqueur en tant que colonnes dans la base de données, au lieu de simplement jeter l'objet JSON directement. Merci pour le conseil. Juste une chose, comment créez-vous l'objet marqueurs? Utilisez-vous un fichier javascript dynamique, comme