0

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

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

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

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

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

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

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

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

感谢您的时间!

4

1 回答 1

0

如果 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));

在这里,他们在 points 中有坐标点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。

于 2016-04-14T11:16:04.273 回答