【问题标题】:Custom drawing in Google Maps Android API v2 (curved Polyline)Google Maps Android API v2(曲线折线)中的自定义绘图
【发布时间】:2014-07-16 14:48:00
【问题描述】:

我有一个MapView(由 Google Maps Android API v2 提供),我想要实现的目标应该足够简单,即绘制一个弯曲的Polyline

具体来说,我有一个LatLngs 数组,而不是让它们以锐角连接,我想让路线很好地四舍五入,以便通过点的线遵循曲线而不是直线和锐角。

现在,这曾经可以在旧的 Google Maps API 中通过创建自定义 Overlay,覆盖 draw(),然后手动绘制到地图上(例如,使用自定义 PaintPath 与所需的设置)。

不幸的是,在 v2 中,Google 似乎删除了 Overlay 类并转移到不再提供对 draw() 方法的访问的更高级别的抽象。 PolylineOptions 相当基础,不提供任何绘制曲线的选项。

有没有办法覆盖draw() 或使用Google Maps API v2 的其他功能来绘制弯曲的Polyline

已经有一些关于 SO 的问题涵盖了这个问题,但是还没有真正令人满意的答案:

Custom Overlays in Google Maps API v2

Overrinding draw() in customized MapView in Google Maps Android API v2

我确定必须有一种方法可以在 Google Maps v2 上进行自定义绘图,同时创建自定义叠加层View 并在坐标与地图同步后在其上绘图是一种选择,在处理缩放和平移地图时会很快变得非常复杂,所以我想尽可能避免。

【问题讨论】:

    标签: android google-maps google-maps-android-api-2


    【解决方案1】:

    我开发了一个抽象类 CanvasTileProvider(),您只需在其中重写 onDraw 方法,以便像往常一样在 Canvas 中执行绘图。另外传入 onDraw 方法的 TileProjection 对象可以帮助您在 LatLng 和 Canvas 上的点之间进行来回计算。 唯一的限制是,瓷砖通常只加载一次。因此这种绘制到地图中的方式适用于不经常变化的形状。因此,如果您的 LatLng 对象数组不断变化(例如,因为它显示设备的当前移动),它可能不适合。

    可以在this SO question的回复中找到CanvasTileProvider类

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 2015-02-18
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      相关资源
      最近更新 更多