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?
openlayers-2
google-maps
CatchingMonkey
fonte
fonte
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 delayer.map
qual é o objeto do mapa OL) deve fornecer uma referência ao mapa do Google. Como isso ocorreunull
algo 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:
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.
fonte
O motivo pelo qual layer.mapObject é nulo é que a propriedade mapObject é criada depois que a camada é adicionada ao mapa. Tente o seguinte:
fonte