【问题标题】:Offline navigation with Mapbox Sdk in Android app from Kml在 Kml 的 Android 应用程序中使用 Mapbox Sdk 进行离线导航
【发布时间】:2016-04-14 10:23:55
【问题描述】:

我正在尝试为 Trekking 开发一个离线导航应用。

应用程序向用户显示他可以去的附近轨道/路线的列表。 示例:
-步行到埃特纳火山
- 走在树林里。

我有几个当地导游提供给我的 KML 文件,每个文件用于不同的曲目。

所以,如果我选择“步行到埃特纳火山”,我将有一张地图,其中包含我必须遵循的前往埃特纳火山的路线,并带有一些有趣点的标记(例如:避难所、纪念碑)。该数据实际上已经准备好,采用 KML 格式。

所以: 用户从我提供的列表中选择轨迹,然后手机在地图上显示轨迹(来自 kml 或等效)以及当前用户位置。

我正在使用 MapBox sdk(但我对替代方案持开放态度)。

实际上,我已经成功下载了该区域(西西里岛)的离线地图,但我知道如何在地图上写下我的 kml。

我还在 Mapbox Studio 中导入了一个 kml,但我不知道如何将 MapBox Studio 地图下载到我的应用程序中。

感谢您的宝贵时间!

【问题讨论】:

  • 你能再解释一下吗?

标签: android android-studio mapbox offline-caching mapbox-gl


【解决方案1】:

如果 Mapbox 看起来是一个不错的选择,那么您只需要研究他们的 Android SDK 以了解是否以及如何支持绘图标记和坐标轨迹。

曲目见https://www.mapbox.com/android-sdk/geojson/

相关的(对您而言)部分就在他们的示例代码的末尾:

LatLng[] pointsArray = points.toArray(new LatLng[points.size()]);

// Draw Points on MapView
mapboxMap.addPolyline(new PolylineOptions()
                    .add(pointsArray)
                    .color(Color.parseColor("#3bb2d0"))
                    .width(2));

这里有坐标点ArrayList。它们是从 GeoJSON 数据中提取的,但您只需要从 KML 数据中提取坐标点,然后根据该示例绘制轨迹。

有关标记,请参阅https://www.mapbox.com/android-sdk/marker/

他们有这个示例代码:

mapboxMap.addMarker(new MarkerOptions()
                    .position(new LatLng(48.13863, 11.57603))
                    .title("Hello World!")
                    .snippet("Welcome to my marker."));

有关带有自定义图标的标记,请参阅https://www.mapbox.com/android-sdk/custom-marker-icon/

他们有这个示例代码:

// Create an Icon object for the marker to use
IconFactory iconFactory = IconFactory.getInstance(MainActivity.this);
Drawable iconDrawable = ContextCompat.getDrawable(MainActivity.this, drawable.ic_directions_boat_black_18dp);
Icon icon = iconFactory.fromDrawable(iconDrawable);

// Add the custom icon marker to the map
mapboxMap.addMarker(new MarkerOptions()
                    .position(new LatLng(-33.8500000, 18.4158234))
                    .title("Cape Town Harbour")
                    .icon(icon));

因此,您只需使用常规的 Android Drawable 作为自定义图标。

看起来很方便。我自己没有使用过 Mapbox SDK。

【讨论】:

  • 感谢您的建议。你知道更好的解决方案吗(比 mapbox?)
  • 这里是suggestions for offline map providers。除了检查它们是否提供绘制标记和轨迹的简单方法外,我没有任何建议。基于矢量数据的(因为它们是)服务可能是正确的方法。数据很紧凑,可以很好地扩展到不同的缩放级别。例如 Mapbox 使用非常紧凑的数据格式,例如Mapzen 瓦片是人类可读的 GeoJSON,需要更多空间。这也可能是一个决定性因素。他们提供的视觉地图样式可能是另一种。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 2010-11-26
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多