2011-04-15 7 views
2

Est-il possible de charger des fichiers KML paresseux une fois qu'une instance de Google Map ou Google Earth Plugin est démarrée? Peut-être y at-il un événement "bounding box" que je peux utiliser pour mettre en file d'attente les fichiers KML nécessaires?paresseux/demande charge KML dans google maps ou google earth plugin?

Edit => trouvé une réponse:

trouvé ce petit tid bits (http://code.google.com/apis/maps/documentation/javascript/events.html):

Note: Si vous essayez de détecter un changement dans la fenêtre, assurez-vous d'utiliser l'événement bounds_changed spécifique plutôt que le composant zoom_changed et les événements center_changed. Parce que l'API Maps déclenche ces derniers événements indépendamment, getBounds() ne peut pas signaler des résultats utiles jusqu'à ce que la fenêtre ait changé avec autorité. Si vous souhaitez getBounds() après un événement , veillez à écouter l'événement bounds_changed à la place.

... ce qui m'a amené à "viewport de gestion Marker" sur cette page: http://code.google.com/apis/maps/articles/toomanymarkers.html#viewportmarkermanagement

Suggérant cette idée de base:

google.maps.event.addLisener(map, 'idle', showMarkers); 

    function showMarkers() { 
    var bounds = map.getBounds(); 

    // Call you server with ajax passing it the bounds 

    // In the ajax callback delete the current markers and add new markers 
    } 

De même, pour GEP, il y a ceci:

GEView.getViewportGlobeBounds()
Renvoie un cadre de délimitation entièrement contient la région du globe que est actuellement visible. La boîte retournée sera plus grande que celle strictement visible , si cela est nécessaire pour inclure tout ce qui est visible.

Renvoie un KmlLatLonBox correspondant à la zone de délimitation de la actuelle fenêtre ou null si aucune partie du globe est visible

+0

Mais pourquoi faire quand cette fonctionnalité est disponible en natif dans Kml? Avec KmlRegions et des choses comme refreshMode et viewRefreshMode Vous pouvez totalement contrôler quand, où et comment et les données sont affichées sans avoir à faire quoi que ce soit sauf charger les données dans les deux api ... pas d'événements, pas besoin de toute méthode showMarkers, rien charge. En outre, votre 'application kml' fonctionnera de la même manière dans les applications prenant en charge Kml, comme le client de bureau Google Earth, etc. – Fraser

Répondre

1

Oui, les régions KML permettent aux données à charger et à tirer seulement quand il tombe dans la vue de l'utilisateur et occupe une certaine partie de l'écran. Il n'y a donc pas besoin de cuisiner vous-même si vous utilisez KML dans Google Earth ou Google Maps Plugin Apis ...

Voir ce grand document sur l'utilisation des régions kml: http://code.google.com/apis/kml/documentation/regions.html

Avec l'interface kmlRegion référence http://code.google.com/apis/kml/documentation/kmlreference.html#region