我需要在可滚动和可缩放的网格上显示一组标记的标记。类似于 Google Maps Android API,但没有实际的地图图像,只有 UI。
我正在使用禁用地图的谷歌地图,但它有一个问题 --- 它不能放大到 5 米以下,而我可能需要缩小到毫米级(标记可能很近)。Yandex Maps 也有类似的限制 --- 即使我不使用它,我也无法放大地图分辨率。
有什么建议么?
我无法共享我的自定义渲染器的代码,所以这里是通用架构:
具有平移和缩放属性以及MapLayers列表的MapView(扩展View)组件
具有onClick和渲染方法的MapLayer抽象类。这个类有两个子类:
2.1。一个GridLayer类,它的渲染方法根据MapView的平移和缩放绘制网格
2.2. 一个MarkerLayer类,用于存储标记并呈现它们。
标记存储纬度、经度以及属性的 HashMap (例如颜色、id 等)
要将Marker的纬度和经度映射到MapView的 x 和 y 我使用实例IProjector接口,目前 - Mercator Projector with formulas from Wikipedia
渲染Marker的MarkerLayer使用MarkerRenderer抽象类的实例。我有两个MarkerRenderers:SimpleMarkerRenderer绘制圆圈(它们的笔触和填充颜色取自Marker的属性)和ImageMarkerRenderer绘制图像(图像 id 取自Marker的属性)