스트리트 뷰 오버레이가있는 OpenLayers


9

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

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

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

오류가 발생합니다.

layer.mapObject is null

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

답변:


4

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

GeoExt ux 확장이 필요합니다

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

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

여기에 이미지 설명을 입력하십시오

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


2
+1-이 데모가 작동합니다. 같은 저자에 의한 것이지만 더 최근의 것입니다.
geographika

GeoExt를 사용하지 않고 OpenLayers에서 StreetView 오버레이 레이어를 사용하는 다른 방법을 알고 있습니까?
CatchingMonkey

Google Maps v2 (더 이상 사용되지 않음) fuzzytolerance.info/code/… API 키가 필요합니다.
Mapperz

GeoAdmin은 더 이상 스트리트 뷰를 제공하지 않는 것 같습니다. gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger

2

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도 플래시가 필요합니다.


안녕하세요, 도와 주셔서 감사합니다. 지금 내 책상에 있지 않으므로 제안을 테스트 할 수 없지만 다음은 내가 알고있는 것입니다. Google Maps API v3을로드하고 있습니다. 이전에 Web Apps에서 StreetView를 구현했지만 이번에는지도에서 오버레이를 얻고 싶습니다. 브라우저 일인지 궁금합니다. 내가 링크를 제공 한 웹 사이트는 IE (8)에서는 잘 작동하지만 Firefox에서는 작동하지 않습니다 ... 어떤 아이디어?
CatchingMonkey

FF6, IE8 또는 IE9에서는 데모가 작동하지 않습니다. 그것은 단지지도 또는 스트리트 뷰 중 하나를 보여주는 것 같습니다 ..
geographika

흠, 웹 사이트가 IE8에서 작동하는 것 같습니다 ... OpenLayers 사용자 목록을 참조하십시오!
CatchingMonkey

1

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

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.