Одиночный слой WMS на Google Maps API v3

Я пытаюсь добавить слой WMS на карту Google Maps с помощью API карт Google. Я смог успешно сделать это с мозаичным слоем WMS, используя следующий код:

var tileSize = new google.maps.Size(256, 256);

var options = {
    'getTileUrl': googleGetTileUrlFunction,
    'tileSize': tileSize,
    'isPng': true
};

var googleWMSLayer = new google.maps.ImageMapType(options);

Где googleGetTileUrlFunction - это функция, которая принимает в качестве параметра координаты и масштаб и возвращает URL-адрес запроса WMS.

Однако мне нужно добавить еще один слой на ту же карту, где слой представляет собой одно изображение, а не плитки. Поскольку мне не удалось найти объект для слоя WMS с одной плиткой в ​​api карт Google, я попытался установить мозаичную карту, где плитки имели размер области просмотра. Я получаю такой результат:

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

Очевидно, он все еще выложен плиткой и не отцентрован правильно. Есть ли способ заставить API карт Google рисовать одну плитку в указанном месте из запроса WMS?

РЕДАКТИРОВАТЬ: Вот сравнение слоя WMS, отображаемого картами Google, с изображением, возвращенным запросом WMS: введите описание изображения здесь Изображение WMS идеально совмещено с картой, вы можете смотреть на восток побережье, чтобы увидеть это ясно. Я ищу способ отобразить это изображение в области просмотра с помощью API карт Google.


person Samuel Lapointe    schedule 31.05.2016    source источник


Ответы (1)


Наложения земли решили мою проблему. Насколько я понимаю, они отображают изображение по указанным координатам на карте.

Вместо создания google.maps.ImageMapType я создаю новое наложение на землю:

var overlay = new google.maps.GroundOverlay(
    url,
    imageBounds
);

overlay.setMap(gmap);

url - это URL-адрес моего запроса WMS, а imageBounds - объект, описывающий координаты для каждой стороны изображения.

Каждый раз, когда я панорамирую или увеличиваю карту, я удаляю предыдущее наложение и заменяю его новым, генерируя новый URL-адрес запроса, где параметр ограничивающей рамки (BBOX) является окном просмотра карты.

Чтобы это сработало, мне пришлось сохранить как наложение, так и функцию, которая генерирует мой URL-адрес WMS, в переменных, доступных в функции, которая обрабатывает события панорамирования карты.

У меня все еще есть некоторые незначительные проблемы с проекцией, которые нужно исправить, но, похоже, это действительный способ сделать это.

РЕДАКТИРОВАТЬ: Я фактически закончил создание пользовательского оверлея, чтобы исправить мою проблему с проекцией. Здесь есть руководство: https://developers.google.com/maps/documentation/javascript/customoverlays

person Samuel Lapointe    schedule 01.06.2016