OpenLayers avec StreetView Overlay

9

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?

CatchingMonkey
la source

Réponses:

4

Openlayers avec Streetview

nécessite l'extension GeoExt ux

tout le code est disponible - pour que vous puissiez voir ce qui vous manque

(si vous pouviez publier un lien en direct vers votre carte actuelle - les utilisateurs pourraient le déboguer pour vous.)

entrez la description de l'image ici

http://api.geo.admin.ch/main/wsgi/doc/build/api/streetview.html

Mapperz
la source
2
+1 - cette démo fonctionne. Il est également du même auteur, mais plus récent.
geographika
Connaissez-vous une autre façon d'utiliser le calque de superposition StreetView dans OpenLayers sans utiliser GeoExt?
CatchingMonkey
Uniquement pour Google Maps v2 (obsolète) fuzzytolerance.info/code/… Clé API requise.
Mapperz
GeoAdmin ne semble plus offrir Street View, l'exemple pertinent que j'ai pu trouver était: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger
2

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.mapquel est l'objet de carte OL) devrait vous donner une référence à Google Map. Comme il s'agit d' nullun 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:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

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.

geographika
la source
Salut, merci pour votre aide. Je ne suis pas à mon bureau en ce moment donc je ne vais pas pouvoir tester vos suggestions, mais voici ce que je sais: je charge définitivement l'API Google Maps v3. J'ai déjà implémenté StreetView dans Web Apps, mais cette fois, je cherche à obtenir la superposition sur la carte également. Je me demande si c'est une chose de navigateur. Le site Web que j'ai donné un lien pour fonctionne bien dans IE (8) mais pas dans Firefox ... des idées?
CatchingMonkey
La démo ne fonctionne pas pour moi dans FF6, IE8 ou IE9. Il semble ne montrer qu'une carte ou une vue de la rue ..
geographika
Hmmm, le site Web semble fonctionner dans mon IE8 ici .... va également consulter la liste des utilisateurs d'OpenLayers maintenant!
CatchingMonkey
1

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:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
D_Guidi
la source