J'essaie d'ajouter la fonctionnalité StreetView à mon application Web OpenLayers, et je voudrais ajouter la superposition montrant la disponibilité de StreetView à la carte elle-même. J'en ai vu un exemple avec succès ici , mais je ne peux pas faire fonctionner le code dans ma propre solution. Plus précisément :
var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
layer.mapObject.addOverlay(new GStreetviewOverlay());
entraîne l'erreur:
layer.mapObject is null
Quelqu'un a-t-il une idée de ce que je pourrais faire de mal, et si oui, comment puis-je résoudre ce problème?
la source
Pour utiliser les couches Google et répondre aux exigences de licence, vous devez accéder aux couches Google via l'API Google. Lorsque vous ajoutez une couche Google à une carte OpenLayers OpenLayers charge l'API Google.
Le
layer.mapObject
(par opposition àlayer.map
quel est l'objet de carte OL) devrait vous donner une référence à Google Map. Comme il s'agit d'null
un problème lors du chargement de l'API Google. Vous pouvez vérifier dans FireBug s'il s'est correctement chargé.L'exemple que vous pointez peut utiliser l'ancienne API Google 2 plutôt que la version 3. Vous n'avez plus besoin d'une clé API et pouvez ajouter l'API Google à l'aide de:
Jetez un œil aux tests unitaires des couches API Google v3 qui peuvent vous aider.
N'oubliez pas que StreetView a également besoin de Flash dans le navigateur.
la source
La raison pour laquelle layer.mapObject est null est que la propriété mapObject est créée après que la couche est ajoutée à la carte. Essaye ça:
la source