OpenLayers com sobreposição do StreetView

9

Estou tentando adicionar a funcionalidade StreetView ao meu aplicativo da web OpenLayers e gostaria de adicionar a sobreposição que mostra a disponibilidade do StreetView ao próprio mapa. Vi um exemplo disso sendo feito com êxito aqui , mas não consigo fazer com que o código funcione em minha própria solução. Especificamente:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});

layer.mapObject.addOverlay(new GStreetviewOverlay());

resulta no erro:

layer.mapObject is null

Alguém tem alguma idéia do que eu posso estar fazendo de errado e, em caso afirmativo, como posso corrigir isso?

CatchingMonkey
fonte

Respostas:

4

Openlayers com Streetview

requer a extensão GeoExt ux

todo o código está disponível - para que você possa ver o que está faltando

(se você pudesse postar um link ao vivo no seu mapa atual - os usuários poderiam depurá-lo para você.)

insira a descrição da imagem aqui

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

Mapperz
fonte
2
+1 - esta demonstração funciona. É do mesmo autor também, mas mais recente.
geographika
Você conheceria outra maneira de usar a camada de sobreposição do StreetView no OpenLayers sem usar o GeoExt?
CatchingMonkey
Somente para fuzzytolerance.info/code/… chave do API do Google Maps v2 (descontinuado) necessária.
Mapperz
Não GeoAdmin não parecem oferecer Street View mais, o fecha exemplo relevante eu poderia encontrar era: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
Kryger
2

Para usar as camadas do Google e atender aos requisitos de licenciamento, é necessário acessar as camadas do Google por meio da API do Google. Quando você adiciona uma camada do Google a um mapa do OpenLayers, o OpenLayers carrega a API do Google.

O layer.mapObject(ao contrário de layer.mapqual é o objeto do mapa OL) deve fornecer uma referência ao mapa do Google. Como isso ocorreu nullalgo errado ao carregar a API do Google. Você pode verificar no FireBug se ele foi carregado corretamente.

O exemplo que você aponta pode estar usando a API do Google 2 mais antiga, em vez da versão 3. Você não precisa mais de uma chave de API e pode adicionar a API do Google usando:

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

Veja os testes de unidade para as camadas da API do Google v3, que podem ajudá-lo.

Lembre-se de que o StreetView também precisa de Flash no navegador.

geographika
fonte
Olá, obrigado por sua ajuda. Não estou na minha mesa agora, então não poderei testar suas sugestões, mas eis o que sei: estou definitivamente carregando a API do Google Maps v3. Eu já implementei o StreetView no Web Apps antes, mas desta vez também estou procurando obter a sobreposição no mapa. Estou querendo saber se é uma coisa de navegador. O site que eu dei um link para funciona bem no IE (8), mas não no Firefox ... alguma idéia?
CatchingMonkey
A demo não funciona para mim no FF6, IE8 ou IE9. Parece para mostrar apenas quer um mapa ou vista para a rua ..
geographika
Hmmm, o site parece funcionar no meu IE8 aqui .... vou consultar a lista de usuários do OpenLayers agora!
CatchingMonkey
1

O motivo pelo qual layer.mapObject é nulo é que a propriedade mapObject é criada depois que a camada é adicionada ao mapa. Tente o seguinte:

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