我还在为新 API 重写我的应用程序(Runbot),并且必须弄清楚如何创建代表里程碑的自定义标记(如 1 公里、2 公里、...)以及如何根据缩放显示或不显示所有里程碑等级。我有一个用于 v1 API 的自定义可绘制对象,我现在渲染标记的工作就是关于这个(Position
是我自己的一个类,它保存位置和更多信息;这里需要的只是它的LatLng
属性):
private void addMarker(Position p, MilestoneDrawable milestone) {
if (mMarkers.containsKey(p)) {
mMarkers.get(p).setVisible(true);
} else {
Marker m = mMap.addMarker(new MarkerOptions()
.position(p.latLng)
.icon(BitmapDescriptorFactory.fromBitmap(Util.drawableToBitmap(milestone)))
.anchor(0.5f, 1.0f) // bottom center
);
mMarkers.put(p, m);
}
}
除了创建和添加自定义标记外,您看到的是我将标记保存在 a 中HashMap
,因此我不必一直销毁和创建它们。当涉及到缩放和决定显示哪些标记时,我首先将所有标记设置为不可见,然后调用addMarker()
我想要显示的标记,以及我已经在其中的标记HashMap
再次显示。
我希望这对你有所帮助。我对新的 API 有点复杂的感觉......