2010-10-29 12 views
0

Je veux créer une application Google Maps avec kml, et je veux créer le fichier kml dynamiquement en fonction du zoom de l'utilisateur.Dynamic kml google maps

Quelque chose comme Google Earth, mais dans google maps (la partie zoom)

J'ai essayé d'utiliser le markermanager et Clusterer mais j'ai trop de marqueurs et de la performance sur les appareils mobiles est très mauvaise, mais avec kml ce n'est pas un question mais j'ai tout le marqueur affiché à la fois.

J'ai essayé d'utiliser NetworkLink dans le fichier kml mais je n'obtenir des paramètres comme le zoom ou limites (je suis en utilisant php)

Je sais que cela pourrait être fait avec JavaScript

new google.maps.KmlLayer('mykmlgenerator.php?zoom='+zoom); 

mais je aimerait éviter cela est-il possible?

merci

+0

Avez-vous regardé l'utilisation de Fusion Tables pour ce type d'opération "à la volée select from kml"? C'est une option pour toi? – Cups

+0

Salut @Cups j'aime l'idée, mais savez-vous si les données doivent être publiques parce que je dois le garder privé, merci – mklfarha

+0

Non, vous devez le partager pour le rendre disponible pour être interrogé sur le web. – Cups

Répondre

1

Tout d'abord, laissez-moi être clair que OpenLayers sont mieux que Google Maps si vous souhaitez utiliser KML dynamique. Ensuite, je veux donner du JavaScript simple que nous utiliserons dans OpenLayers. Vous devriez les essayer car il utilise également la bibliothèque JavaScript.

Ici, je vous montre brièvement comment les codes sont écrits.

<html> 
<head> 
<title>Google Layer with KML file</title> 
<link rel="stylesheet" href="http://openlayers.org/api/theme/default/style.css" type="text/css" /> 
<link rel="stylesheet" href="http://openlayers.org/dev/examples/style.css" type="text/css" /> 
<script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAl9RMqSzhPUXAfeBCXOussRTQDbvAygy0cfGJr8dEMAYKf3RWNBQqP9mjKIsqTfmAlz5LOJ3Xpy5s4w'></script> 
<script src="http://openlayers.org/api/OpenLayers.js"></script> 
<script type="text/javascript"> 

var map; 

function init() { 
    // Create the map object 
    map = new OpenLayers.Map('map'); 
    // Create a Google layer 
    var gmap = new OpenLayers.Layer.Google(
     "Google Streets", // the default 
     {numZoomLevels: 20} 
    ); 
    // Add layer to map 
    map.addLayer(gmap); 

    //Adding KML file to map 
    map.addLayer(new OpenLayers.Layer.GML("KML", "yourkml.kml", 
      { 
      format: OpenLayers.Format.KML, 
      formatOptions: { 
       extractStyles: true, 
       extractAttributes: true, 
       maxDepth: 2 
      } 
      })); 
    // Zoom to Kuala Lumpur, Malaysia 
    map.setCenter(new OpenLayers.LonLat(101.686855,3.139003), 13);   
} 
</script> 
</head> 
<body onload="init()"> 
<h1 id="title">Google Layer with KML file</h1> 
<div id="map" style='width: 700px; height: 700px'></div> 
</body> 
</html> 

Comme vous pouvez le voir, il y a un petit point orange sur la carte. C'est le fichier KML chargé sur Google Maps. Et si vous voulez les rafraîchir, vérifiez ceci link

Enfin, j'espère que ma réponse n'est pas trop tard pour vous.

+0

merci pour la réponse, je pensais que cette question était une cause perdue, je vais essayer Openlayers ... Je suis intéressé par la performance sur les appareils mobiles, savez-vous si couche ouverte les suporte (iOS, Android ...)? merci – mklfarha

+1

Salut mklfarha Pour être honnête, je suis un grand fan fan de OpenLayers.Et en fait, ils supportent aussi les smartphones/appareils de poche. J'utilise l'iPhone en passant, vous pouvez les voir bien sûr, et la meilleure partie, c'est l'open source. – zearth

1

J'ai essayé ceci, seulement pour réaliser que le KML dynamique avec Google Maps est maladroit. Si vous le pouvez, il est plus facile de simplement convertir votre code KML en JSON et de créer votre balisage sur la carte en utilisant l'API JavaScript de Google Maps (https://developers.google.com/maps/documentation/javascript/).