Я пытаюсь добавить функциональность StreetView в свое веб-приложение OpenLayers и хотел бы добавить наложение, показывающее доступность StreetView к самой карте. Я видел пример того, как это делается успешно здесь , но я не могу заставить код работать в моем собственном решении. В частности:
var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
layer.mapObject.addOverlay(new GStreetviewOverlay());
приводит к ошибке:
layer.mapObject is null
Кто-нибудь понял, что я могу делать неправильно, и если да, как я могу это исправить?
openlayers-2
google-maps
CatchingMonkey
источник
источник
Чтобы использовать слои 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, используя:
Посмотрите на модульные тесты для уровней API Google v3, которые могут вам помочь.
Помните, что StreetView также нуждается в Flash в браузере.
источник
Причина, по которой layer.mapObject имеет значение null, заключается в том, что свойство mapObject создается после добавления слоя на карту. Попробуй это:
источник