java - 仅在设备屏幕的特定部分显示谷歌地图折线
问题描述
大家好,我正在创建一个骑行应用程序,我正在寻求一些帮助来解决我面临的以下问题。
所以,在灰色背景下方的图像上代表一个谷歌地图片段,在它上面有两个视图(黑色)我想知道是否可以只在红色区域的黑色视图之间显示一条折线和标记,并且有地图的其余部分也显示在背景中。
如果它有帮助,我已经设法使用以下方法获得了红框角落的 LatLng:
googleMap.getProjection().fromScreenLocation();
先感谢您!
解决方案
对的,这是可能的。几种方式。例如,您的图形的红色区域可以View
(例如自定义视图)具有透明背景,您可以在其上绘制多段线(您需要考虑地图视图上透明“红色”视图的位置以校正fromScreenLocation()/toScreenLocation()
方法结果) . 此外,您可能还可以使用两个s 并同步其滚动和缩放,但恕我直言,最好的方法是基于(或)覆盖for -based(或for -based)方法来MapView
实现自定义视图组件,如或者回答:MapVew
MapFragment
onDraw()
MapVew
dispatchDraw()
MapFragment
..
@Override
public void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
canvas.save();
drawPolylinesInRegion(canvas);
canvas.restore();
}
...
在drawPolylinesInRegion(canvas);
方法中,您应该通过您提到的相反方法“手动”绘制折线和标记转换它们的坐标:toScreenLocation()
并考虑到示例图形的“灰色区域”的大小。
推荐阅读
- c++ - 从部分专用的模板方法调用模板非静态方法
- python - 使用 int8 列检查 pandas 数据框中的 NaN 值
- html - 范围滑块拇指未在 IE 上显示
- python - python anaconda Py_Initialize:无法初始化 sys 标准流 LookupError:未知编码:65001
- java - java.util.zip“找不到文件”错误
- c# - .net Timer 事件处理程序能否修改非静态变量
- acumatica - PageTitle.ascx.cs 页面中的“未设置对象引用”错误
- winforms - 如何在具有相对位置而不是固定位置的网格视图中将控件放置在窗口窗体中
- mysql - 知识自动生成的查询理解
- angular - Angular 6 路由器丢失路由参数