当前位置: 首页 > 知识库问答 >
问题:

自定义绘图在谷歌地图Android API v2(弯曲的折线)

范修伟
2023-03-14

我有一个地图视图(由Google Maps Android API v2提供),我试图实现的应该足够简单,就是简单地绘制一条弯曲的多段线

具体地说,我有一个LatLngs数组,我不想让它们以锐角连接,而是想让路线很好地圆滑,这样穿过点的线会沿着曲线,而不是直线和锐角。

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

不幸的是,在v2中,谷歌似乎删除了Overlay类,转而使用更高级别的抽象,不再提供对draw()方法的访问<代码>多段线选项相当基本,不提供任何绘制曲线的选项。

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

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

谷歌地图API v2中的自定义覆盖图

在Google Maps Android API v2中的自定义地图视图中过度旋转draw()

我相信一定有一种方法可以在谷歌地图v2上进行自定义绘图,同时创建自定义覆盖视图和绘图,一旦坐标与地图同步是一种选择,处理时会很快变得非常复杂缩放和平移地图,所以这是我想尽可能避免的事情。

共有1个答案

赫连智
2023-03-14

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

您可以在这个问题的答案中找到CanvasTileProvider类

 类似资料:
  • 情况是我使用Fragments在main活动中显示2个视图,这意味着我有两个选项卡,而在第二个选项卡中,我使用以下代码显示谷歌地图 这是第二个选项卡,我想自定义地图,为此我在上面的函数中使用了这段代码。 imap=SupportMapFragment)getSupportFragmentManager()。findFragmentById(R.id.map))。getMap(); imap是在创建

  • 我正在为Android制作基于谷歌地图服务的公共交通地图。地图应该包含很多标记(超过300个),它们应该在地图放大和缩小(缩放)时调整大小。现在标记只是互相重叠,有没有办法创建像这样的自定义标记? 我自己也试过,但没有成功。使用android-map-utils库(https://github.com/googlemaps/android-maps-utils)标记现在看起来更好了,但它们不能调整

  • 问题内容: 该问题已经被提出,并且在这里已经接受了答案,但是接受的答案不是我想要的。我想使用一个customview,其中的槽口采用宽度+所经过的视图的一定边距,例如上图中的付款图标。虽然寻找到它拥有一个晶圆厂像bottomappbar 这个我看到了一个叫做类边缘治疗类我想这可以作为很好。我现在不会发布我的customview代码,因为我只能绘制一个矩形。 问题答案: 您需要使用绘制曲线Cubic

  • 我在我的flutter应用程序中使用google_maps_flutter来使用谷歌地图我有自定义标记图标,我用BitmapDescriptor.from字节(mark erIcon)加载它,但我想用一些文本显示Url的图标。 这就是我们要达到的目的 是否可以通过flutter或任何可以动态创建图像的外部图像依赖来实现相同的效果。

  • 我正在尝试自定义信息窗口,并在加载地图时显示它。自定义信息窗口出现了,但是,除了默认的信息窗口背景(白色)之外,我还没有为出现的标记设置图标?为什么我会得到这个默认值? 以下是我尝试的内容的屏幕截图: 我不想要白色窗口和标记图标?我正在尝试实现以下截图:如何使用Android map API v2创建自定义形状的位图标记 以下是我正在尝试的:

  • 我有一些谷歌地图折线。我试图在它们周围画两条折线,这样它们就形成了某种边界: 所以对于原始折线的每一个点,我计算边界线点,从原点算起25米: 在这个例子中,让我们省略折线的第一个和最后一个点。所以我总是看上一个点和下一个点,计算中心点的偏移量。