仅在设备屏幕的特定部分显示谷歌地图折线

Posted

技术标签:

【中文标题】仅在设备屏幕的特定部分显示谷歌地图折线【英文标题】:Show google maps polyline only on specific part of device screen 【发布时间】:2021-10-19 14:29:32 【问题描述】:

大家好,我正在创建一个乘车应用程序,我正在寻求一些帮助来解决我面临的以下问题。

所以,在灰色背景下方的图像上代表谷歌地图片段,在它上方有两个视图(黑色)我想知道是否可以仅在红色区域中仅在黑色视图之间显示折线和标记并将地图的其余部分也显示在背景中。

如果有帮助,我已经设法使用以下方法获得了红框角落的 LatLng:

googleMap.getProjection().fromScreenLocation();

提前谢谢你!

【问题讨论】:

【参考方案1】:

是的,这是可能的。几种方式。例如,您的图形的红色区域可以是具有透明背景的View(例如自定义视图),您可以在其上绘制折线(您需要考虑地图视图上透明“红色”视图的位置,以便更正fromScreenLocation()/toScreenLocation() 方法结果)。此外,您可能还可以使用两个MapViews 并同步其滚动和缩放,但恕我直言,最好的方法是基于MapVew(或MapFragment)实现custom view component 覆盖onDraw() MapVew-based(或dispatchDraw() for MapFragment-based)方法,如this 或that 答案:

..
@Override
public void dispatchDraw(Canvas canvas) 
    super.dispatchDraw(canvas);
    canvas.save();
    drawPolylinesInRegion(canvas);
    canvas.restore();

...

drawPolylinesInRegion(canvas); 方法中,您应该通过您提到的相反方法“手动”绘制折线和标记转换它们的坐标:toScreenLocation() 并考虑到示例图的“灰色区域”的大小。

【讨论】:

以上是关于仅在设备屏幕的特定部分显示谷歌地图折线的主要内容,如果未能解决你的问题,请参考以下文章

GeoComplete,模态中的谷歌地图显示灰色地图,位置仅在屏幕调整大小后显示

如何通过仅在用户滚动到特定部分时调用它来减少谷歌地图 API 命中数

Android - 如何让谷歌地图显示一条动画连续闪烁点的折线

如何在谷歌地图android中显示当前位置的平滑移动

剪辑或删除折线谷歌地图 v2 的某些部分

在某些安卓设备上显示白屏而不是谷歌地图