Использование gdk-maps sdk в приложении для Android с пользовательскими тайлами от GeoServer - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь создать приложение, которое отображает 2D-карту с использованием google-maps sdk и получает плитки от GeoServer. У меня проблема с тем, что сервер возвращает разные уровни масштабирования, отличные от ожидаемых 1x1, 4x4,16x16 квадратов, вместо этого он использует половину Tiles in Height по сравнению с шириной: 4x2, 16x8 и т. Д. Это заканчивается тем, что карта отображается нормально, но с половиной плиток вверху пусто, есть ли способ настроитьэтот и мужской он работает с таким видом плиток?

Сервер использует проекцию EPSG: 4326.

Используя смещение, я смог отцентрировать карту, но при масштабировании она не работает должным образом ...

Вот изображение GIF получившейся карты: https://gph.is/g/E1qQgkw

Вот несколько снимков справа от возвращаемых плиток, а слева - другой слой, который работает, как и ожидалось:

Here are some captures on the right of the tiles being returned and on the left a different layer that works as expected

Есть лиспособ настроить гугл-карты для работы с этой проекцией и плитками? Я даже готов перейти на другой SDK, если это не так ...

Буду признателен за любую помощь или указатели ...

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

EPSG 3857, Pseudo-Mercator действительно является «стандартным» клиентом для использования плиток https://epsg.io/3857

, и я не знаю ни одного другого SDK, способного использовать нестандартные плитки (osmdroid, mapsforge,mabox, ..)

Так что ваш экземпляр Geoserver должен будет обслуживать EPSG: 3857, либо на лету, либо предварительно сгенерированный.

Я не мог понять, обслуживает ли GeoserverWMS плитки. В этом случае вы можете передать код EPSG в качестве параметра при запросе тайлов. Взгляните на это дополнение для Google Maps, чтобы увидеть, как это делается: https://github.com/shalperin/android-wms

В случае, если Geoserver просто обслуживает кэш предварительно сгенерированных плиток X / Y / Z, вам придетсявосстановить этот кеш.

Тем не менее, вот официальная демонстрация того, как использовать плитки с помощью TileOverlay https://github.com/googlemaps/android-samples/blob/master/ApiDemos/java/app/src/main/java/com/example/mapdemo/TileOverlayDemoActivity.java

0 голосов
/ 09 ноября 2019

По умолчанию GeoServer (фактически внутренний GeoWebCache ) может предоставлять плитки, используя 3 связанных, но различных стандарта WMTS , TMS и WMS-C в двух проекциях EPSG: 4326 (широта / долгота) или EPSG: 900913 (в настоящее время известно как EPSG 3857, Psuedo Web Mercator).

Какая из этих конечных точек вам нужна, зависит от того, какой SDK вы используете, но если посмотреть на изображения, которые вы видите, слева находится EPSG: 4326, а справа EPSG: 3857.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...