【问题标题】:Using google-maps sdk in Android App with custom Tiles from GeoServer使用来自 GeoServer 的自定义 Tiles 在 Android 应用程序中使用 google-maps sdk
【发布时间】:2019-11-08 13:53:33
【问题描述】:

我正在尝试创建一个应用程序,该应用程序使用 google-maps sdk 显示 2D 地图并从 GeoServer 获取 Tiles,我遇到了关于服务器返回不同缩放级别的问题,而不是预期的 1x1、4x4、 16x16 方块,相反,它使用高度与宽度相比的一半瓷砖:4x2、16x8 等... 这最终导致地图显示正常,但顶部的一半瓷砖是空的,有没有办法配置它并且男性它适用于这种瓷砖?

服务器使用 EPSG:4326 投影。

使用偏移量我能够使地图居中,但在缩放时它的行为并不像预期的那样......

这是生成地图的 gif:https://gph.is/g/E1qQgkw

下面是正在返回的图块右侧的一些捕获,左侧是按预期工作的不同层:

有没有办法配置谷歌地图来使用这个投影和瓷砖?如果不是这样,我什至愿意切换到不同的 sdk...

我将不胜感激任何帮助或指点...

【问题讨论】:

    标签: android google-maps google-maps-api-3 geoserver


    【解决方案1】:

    EPSG 3857,Pseudo-Mercator 确实是消费瓷砖的客户端“标准” https://epsg.io/3857

    而且我不知道有任何其他 SDK 能够使用非标准切片(osmdroid、mapsforge、mabox、..)

    因此,您的 Geoserver 实例必须为 EPSG:3857 提供即时服务或预生成服务。

    我不明白 Geoserver 是否在提供 WMS 切片。在这种情况下,您可以在请求图块时将 EPSG 代码作为参数传递。 看看这个谷歌地图插件,看看它是如何完成的, 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

    【讨论】:

    • 感谢您的回复!它有助于澄清问题。 GeoServer 没有为该卫星层返回 WMS Tiles,它是一组预先生成的 Tiles,遗憾的是我必须让它工作,因为其他服务已经使用这些 Tiles,我们无法更改它们。我正在研究任何可以与此 ESPG:4326 Tiles 一起使用的 sdk,或者研究如何处理这些切片以在移动设备上即时生成 EPSG:3857,我能够找到一些网络库,但没有任何东西可以在移动设备上运行设备离线。
    • ...您在客户端剩下的唯一可能性是混合/网络。 Leaflet 和 Openlayers JS 库都支持任意投影,例如,github.com/idris-maps/leaflet-custom-projection
    【解决方案2】:

    默认情况下,GeoServer(实际上是内部 GeoWebCache)能够在两个投影 EPSG:4326(纬度/经度)中使用 3 个相关但不同的标准 WMTSTMSWMS-C 提供切片) 或 EPSG:900913(现在称为 EPSG 3857,Psuedo Web Mercator)。

    您需要哪些端点取决于您使用的 SDK,但查看您显示的图像,左侧是 EPSG:4326,右侧是 EPSG:3857。

    【讨论】:

      【解决方案3】:

      经过大量调查,我们找出了问题并提出了解决方案,也许它可以在未来帮助某人,问题是卫星瓷砖与道路瓷砖相比,ESPG:4326 vs ESPG: 3857(谷歌地图和所有其他 SDK 使用的最常见的 Web Mercator)

      我们无法对图块进行任何更改,但我们确实有可能对服务器进行更改,因此MapProxy 是我们的最佳选择,使用该工具我们能够将 4326 转换为 3857 并使用其中的图块没有变化的移动客户端。 它是一个在 Windows 上运行的 Python 程序,充当客户端请求的切片和提供切片的服务器之间的代理,在新端点上重新投影和公开它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多