【问题标题】:Google Maps Android how do you display arrows indicating nearby markers outside boundaries?Google Maps Android 如何显示指示边界外附近标记的箭头?
【发布时间】:2018-03-22 10:11:17
【问题描述】:

一张图片描述了一千多个单词,所以我用我糟糕的 Gimp 技能创建了下面的草图。

中间的图标是用户的当前位置,周围的标记是附近的地方。黑色方块表示用户在当前缩放级别下可以在地图上看到的内容,但这仅显示 2 个地点。

所以我的问题是:

是否有任何内置方法可以在外部屏幕区域显示某种指示符,以便用户可以看到当前屏幕可见区域之外的附近位置。如果这些指示器可以显示不在正方形内而是在给定半径内显示的标记,那就太好了。

如果没有内置方法,我应该研究什么来解决这个问题?

【问题讨论】:

  • 似乎没有内置的方法可以做到这一点。但是,如果您知道标记的坐标,则可以实现它:只需覆盖 MapView 的onDraw(或在MapView 上添加View)并将箭头指向几个最近的外部标记。并在onMapLoaded() 方法上更新它们。

标签: android google-maps android-maps-v2


【解决方案1】:

您可以使用LatLngBounds.Builder;SphericalUtil 来执行此操作。 这是一个例子。

double radius = 1000; // 1km distance.
LatLngBounds.Builder builder = new LatLngBounds.Builder();
double distance = SphericalUtil.computeDistanceBetween(currentPosition, marker.getPosition());
if (distance < radius) {
    // include the marker within the 1km distance.
    builder.include(marker.getPosition()); 
}
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 19));

不要忘记添加编译 'com.google.maps.android:android-maps-utils:0.5' 到您的 build.gradle 使用 SphericalUtil

【讨论】:

  • 谢谢杰罗尔。但是,当我阅读您的代码时,它只是计算边界以在屏幕上显示给定半径内的所有位置。这不是我想要的。我想保持缩放级别,然后在外部屏幕上显示某种符号(双箭头)以向用户指示如果他朝那个方向移动,或者自己调整缩放级别,那么他会看到标记/地点。
  • 好的,我可以知道您当前的相机缩放级别吗?
  • 缩放级别由用户动态决定。他可以通过捏合来调整缩放级别。所以也许我们应该跳过半径,只说屏幕边界之外的所有标记都应该用双箭头图标表示。然后,如果它们离得太远,我总是可以使用您使用 SphericalUtil 的漂亮计算来过滤掉其中的一些。
猜你喜欢
  • 2023-03-25
  • 2019-07-16
  • 2017-02-16
  • 2011-08-13
  • 2018-01-26
  • 1970-01-01
  • 2020-02-24
  • 2016-01-07
  • 2015-02-17
相关资源
最近更新 更多