2010-12-15 2 views
0

J'essaye de construire une vue google earth montrant les villes, mais je suis resté avec le parser kml geoxml3. J'ai un javascript qui construit une carte google en montrant d'abord les emplacements que je veux. Cela fonctionne bien. J'appelle la fonction d'un script php en lui fournissant une adresse et une référence de fichier kml à partir de la base de données. La fonction construit la carte, définit un drapeau 'map_finished' comme un drapeau de contrôle quand tout s'est bien passé et appelle la fonction de construction google earth view.Problème pour passer un fichier kml à Google Earth en utilisant la classe geoxml3 et la classe ProjectedOverlay

// Get maps and earth from google 
google.load('maps', '2.s', {'other_params': 'sensor=true'}); 
google.load('earth', '1'); 

//Google Earth Initializer 
function initObjectEarth() { 
    // Check if Google Earth plugin is installed 
    if(gm_loaded) { 
    this.ge_plugin_installed = google.earth.isInstalled(); 

    if(this.ge_plugin_installed) { 
    google.earth.createInstance('inmap', geSuccessCallback, geFailureCallback); 
    ge_loaded = true; 
    } else { 
    alert('Your Browser has not yet installed the Google Earth plugin. 
      We recommend installing it to use all features!'); 
    return false; 
    } 
} 
} 

// Success handler 
function geSuccessCallback(object) { 
    this.ge = object; 
    this.ge.getWindow().setVisibility(true); 
    this.kmlParser = new geoXML3.parser(); 
} 

// Error handler 
function geFailureCallback(object) { 
    alert('Error: ' + object); 
} 

L'analyseur geoxml utilise la classe ProjectedOverlay. Les deux bibliothèques sont chargées dans la tête du document. Lorsque l'analyseur est instancié, il demande une instance ProjectedOverlay. Cette classe jette une

Error: **google.maps is undefined** 

erreur dans Firebug pour la déclaration suivante

ProjectedOverlay.prototype = new google.maps.OverlayView(); 

Dans mon fichier script, je l'ai déclaré vars y compris

var gm //for google map 
var ge //for google earth 

g est fixé dans la fonction qui construit le Google Map.

Je me demande comment résoudre ce problème. J'ai essayé le getProjection() chose que j'ai trouvé dans le Web ainsi que

ProjectedOverlay.prototype = new google.maps.OverlayView().prototype; 

sans succès. Ce sujet est absolument nouveau pour moi et je n'arrive pas à comprendre comment le résoudre ni à partir de la documentation de OverlayView ni de google search.

Qu'est-ce que j'ai oublié ou mal fait?

Répondre

0

L'appel au constructeur geoXML3 est faux, vous devez passer l'objet google.maps en paramètre (... d'où l'erreur "google.maps is undefined").

this.kmlParser = new geoXML3.parser({map: gm}); // gm for google map 
Questions connexes