如果 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。