스트리트 뷰 오버레이가있는 OpenLayers 작동시킬 수는 없습니다. 구체적으로

StreetView 기능을 OpenLayers 웹 앱에 추가하려고하는데 StreetView 가용성을 보여주는 오버레이를지도 자체에 추가하려고합니다. 여기 에서 성공적으로 수행 된 예를 보았지만 내 솔루션에서 코드를 작동시킬 수는 없습니다. 구체적으로 특별히 :

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

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

오류가 발생합니다.

layer.mapObject is null

누구든지 내가 뭘 잘못하고 있는지 알았습니까? 그렇다면 어떻게 해결할 수 있습니까?



답변

스트리트 뷰가있는 오픈 레이어

GeoExt ux 확장이 필요합니다

모든 코드를 사용할 수 있으므로 누락 된 내용을 확인할 수 있습니다

(현재지도에 실시간 링크를 게시 할 수있는 경우 사용자가 직접지도를 디버깅 할 수 있습니다.)

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


답변

Google 레이어를 사용하고 라이센스 요구 사항을 충족하려면 Google API를 통해 Google 레이어에 액세스해야합니다. OpenLayers 맵에 Google 레이어를 추가하면 OpenLayers가 Google API를로드합니다.

layer.mapObject(반대 layer.map되는 OL 맵 오브젝트입니다) 당신에게 구글지도에 대한 참조를 제공해야합니다. 이것이 nullGoogle API를로드하는 데 잘못되었습니다. FireBug에 올바르게로드되었는지 확인할 수 있습니다 .

예를 들어 버전 3이 아닌 이전 Google 2 API를 사용 중일 수 있습니다. 더 이상 API 키가 필요하지 않으며 다음을 사용하여 Google API에 추가 할 수 있습니다.

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

도움이 될 수 있는 Google v3 API 레이어단위 테스트를 살펴보십시오 .

브라우저에서 StreetView도 플래시가 필요합니다.


답변

layer.mapObject가 null 인 이유는지도에 레이어를 추가 한 후 mapObject 속성이 만들어지기 때문입니다. 이 시도:

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