- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Android 应用程序,其中包含一个带有谷歌地图的 Activity ,我在其中用多段线绘制了两个位置之间的路径。我在源和目的地添加了标记,信息窗口显示了一些数据,但这些信息窗口阻止了折线并使用户缩放 map 以查看路径。有没有办法像 Uber 那样移动信息窗口?
任何帮助将不胜感激。谢谢。
最佳答案
这个问题实际上有两个部分:(1) 确定您想要信息窗口的位置和 (2) 如何将它放在那里。我将主要关注 (1) 并尝试为 (2) 提供引用。
(请注意,还有第三个问题可以从动画 gif 中推断出来:“Home”的信息窗口已调整,因为它在最终 View 中被剪裁了 - 我在最后添加了一种方法。)
(1) 的一种方法是在从 A 点到 B 点的路径周围创建一个边界矩形。这是对问题的简化,虽然有待展示的缺点,但却是一个很好的初始方法。我认为您很快就会意识到一些优化,以便在极端情况下更好地适应位置。
使用此边界矩形 (R) 确定相对于感兴趣的标记 anchor 的最小尺寸(d1 与 d2)。
然后使用最小尺寸,您可以计算从 anchor 到信息窗口最近一侧的屏幕距离 (f)。从最近的点开始,您可以确定信息窗口的 anchor 偏移量。
首先是一些有几个用途的图片:(a) 通过标签识别关键位置和 (b) 开始考虑更复杂的问题:
最简单的情况如图所示...:
...但是标签有点挤,所以这里显示了第二个松散的案例:
虽然效率低下,但确定边界矩形很简单。遍历路径点(从“我的位置”到“家”)并保持纬度和经度的最大值和最小值(请注意,-180 度到 180 度的经度交叉是一种普遍的复杂性,此处未解决 - 请记住这一点)。这产生:
LatLng upperLeft (maxLat, minLng)
LatLng lowerRight (minLat, maxLng)
那么建立A的信息窗口的位置就是:
Compute the length (in meters) from A to side of rectangle by using Point A to (A lat, M lng) and Point A to (M lat, A Lng). (Use `SphericalUtil.distanceBetween`)
Determine the lesser of the two measurements, L.
Use L (distance in meters) to compute a screen pixel equivalent S.
Adjust S to offset from edge of BR (Sadj)
Use Sadj (in screen pixels) to compute the Info Window offset (in screen pixels) taking into account the Info Window anchor point and the dimension of the Info Window.
Set the info window anchor (which is relative to the marker coordinate system) and render.
优化:假设您更喜欢第二张图片中“家”的位置:
然后优化将考虑使用更近的路径段的某些子集来考虑更小的边界矩形。因此,这导致了下一个问题,即确定何时使用 d1/d2 的阈值进行优化。当缩放级别不包括两个点时,将使用相同的优化;只需使用屏幕上的点来计算边界矩形。
对于第三个问题,缩放后“主页”被剪裁是为了在应用边界矩形时考虑信息窗口的尺寸 - 这样最小尺寸将始终包括信息窗口的相应范围。
关于android - 将 infoWindow 放置在远离重叠多段线的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51414694/
我目前遇到一个问题,当我的手向前/向后时,我想将游戏对象移近/远离我(HoloLens 相机)。好吧,我已经正确地实现了将对象移近/移远的逻辑,但无法通过确定手的运动来解决问题。我正在使用 HoloT
我们是由少数 Delphi 开发人员组成的团队,他们多年来一直在使用 VSS(我知道这很遗憾),但我们没有使用 VCS 的任何高级功能,因此在很多情况下它都工作正常(但有些情况)有时它让我发疯:()。
我正在使用 DOT 生成如下所示的有向图。我希望所有边都有一个南尾口和一个北头口,这样所有边都从节点的底部开始并进入节点的顶部。 正如您从左侧图像中看到的那样,从节点 2 到节点 4 和节点 6 的边
在一个典型的js类中,所有对成员函数的调用都必须在this之前。我正在寻找一种技术,它可以让我创建一个相互依赖的 STATIC 函数库,并依靠闭包/作用域使事情变得更容易一些。 例子: var Sin
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
作为一个新手,IB 和所有可能的联系让我感到困惑。我发现的大多数教程都是我所说的意大利面条代码的转世,其中的纠缠是通过拖动创建的所有连接。当然,我想使用 IB 进行 View 布局(调整大小和放置视觉
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
黄点“gif1”必须进入黑框“gif”,但如您所见,我以某种方式设法做了相反的事情。 我做错了多少事? Livewave Preview 我已经尝试过 overflow:auto 或 hidden 并
我正在编写一个性能关键型应用程序,它必须在转储到磁盘之前在物理内存中存储尽可能多的数据。 我可以使用 ::GlobalMemoryStatusEx(...) 和 ::GetProcessMemoryI
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我目前正在开发使用 spring 1.2.7 的 Spring 遗留应用程序。 org.springframework spring 1.2.7 但是上面的 Artifa
尝试并搜索了很多。当父 View 的框架较小时,作为 subview 添加的按钮远离 View 。我不希望它在框架很小的时候出现。 UIView *vw = [[UIView alloc] init
我有一个游戏,其中有一个绿色圆圈在场景中的随机位置随机生成,每次点击该圆圈时,它都会改变位置,有可能会变成红色。当圆圈为红色时,我希望用户点击不是红色圆圈的屏幕空间。如何检测不在圆圈上的水龙头?我的圈
我有一个 Web 应用程序,它使用 AWS Lambda 和 API Gateway(受 IAM 保护)作为后端,前端是使用 React 构建的。我正在尝试找出将 AWS key 排除在生产 Java
我需要知道我的 div 何时在原生 javascript 中被点击。 最佳答案 要仅使用 native javascript 代码来测试被单击的元素是否是有问题的元素,您可以这样做 var handl
本着精心设计的面向对象的精神,我正在扩展的某个类已将其字段之一标记为 protected 。此类还慷慨地提供了公共(public) setter,但没有 getter。 我正在用一个基类扩展这个类,这
所以我在 OpenGL ES 中生成了一个球体(具体来说,OpenGL ES 2.0,在 Java 中,适用于 Android)。当这个球体放置在与用于我的 View 矩阵的中心相同的位置时,它很好,
我有一个应用程序,我在其中通过 WiFI 发送网络数据。一切都很好,直到我关闭显示器或设备进入“ sleep ”状态。我已经锁定了 WiFi,但是,似乎是这样的情况,即 CPU 速度在 sleep 时
我通过 exec 在 PHP 中执行一个外部命令,我获取该输出(它是一个数组),然后让各个字符串搜索特定的字符串。然后我希望将这些字符串回显到屏幕上。但是,其中一些字符串包含 XML 示例,并且它们正
我目前正在 Windows 上运行一个大型分布式 Java 系统。 从 Java 的角度来看,迁移到 Linux 有什么好处? 我能想到的一个是能够在 native 运行“服务”。目前我必须登录到 W
我是一名优秀的程序员,十分优秀!