OpenLayers с наложением StreetView


9

Я пытаюсь добавить функциональность StreetView в свое веб-приложение OpenLayers и хотел бы добавить наложение, показывающее доступность StreetView к самой карте. Я видел пример того, как это делается успешно здесь , но я не могу заставить код работать в моем собственном решении. В частности:

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

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

приводит к ошибке:

layer.mapObject is null

Кто-нибудь понял, что я могу делать неправильно, и если да, как я могу это исправить?

Ответы:


4

Openlayers с Streetview

требуется расширение GeoExt UX

весь код доступен - так что вы можете увидеть, что вам не хватает

(если бы вы могли опубликовать живую ссылку на вашу текущую карту - пользователи могли бы отладить ее для вас.)

введите описание изображения здесь

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


2
+1 - это демо работает. Это тоже автор, но более поздний.
География

Знаете ли вы о каком-либо другом способе использования наложенного слоя StreetView в OpenLayers без использования GeoExt?
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. Когда вы добавляете слой Google на карту OpenLayers, OpenLayers загружает Google API.

Объект layer.mapObject(в отличие от layer.mapкоторого является объектом карты OL) должен дать вам ссылку на карту Google. Поскольку это nullчто-то пошло не так при загрузке Google API. Вы можете проверить в FireBug , правильно ли он загрузился.

В качестве примера вы можете использовать более старый API Google 2, а не версию 3. Вам больше не нужен ключ API, и вы можете добавить API Google, используя:

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

Посмотрите на модульные тесты для уровней API Google v3, которые могут вам помочь.

Помните, что StreetView также нуждается в Flash в браузере.


Привет, спасибо за вашу помощь. Я сейчас не за своим столом, поэтому я не смогу проверить ваши предложения, но вот что я знаю: я определенно загружаю API Карт Google v3. Раньше я реализовывал StreetView в веб-приложениях, но на этот раз я также надеюсь получить наложение на карту. Мне интересно, если это вещь браузера. Сайт, на который я дал ссылку, прекрасно работает в IE (8), но не в Firefox ... есть идеи?
CatchingMonkey

Демонстрация не работает для меня в FF6, IE8 или IE9. Кажется, только показывает карту или вид на улицу ..
география

Хммм, веб-сайт, кажется, работает в моем 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());
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.