android - 用户移动时在 Android 谷歌地图中绘制多段线

标签 android google-maps polyline

嗨,我是 Android 的新手,我已经了解了 android google maps。我想实时跟踪用户移动并在 android google map 中绘制折线路径,有人可以帮我举个例子吗?我可以获得位置变化间隔,但仍然不知道如何将其应用到折线中并将数据 LatLng 保存到数组中。

最佳答案

您需要在您的 gradle 中添加此/相关的 g.play 服务 virsion 行以防万一。

compile 'com.google.android.gms:play-services-maps:8.4.0'

作为official doc说,使用此代码。

GoogleMap map;
 // ... get a map.
 // Add a thin red line from London to New York.
 Polyline line = map.addPolyline(new PolylineOptions()
     .add(new LatLng(51.5, -0.1), new LatLng(40.7, -74.0))
     .width(5)
     .color(Color.RED));

注意:修改 Polyline 的方法必须在主线程上调用,否则,将在运行时抛出 IllegalStateException

为了我知道你可以找到这段代码所以这是我的小逻辑

  1. 保留开始和结束位置 Latlng 变量(startLatlng ,endLatlng)
  2. 正如您在示例中看到的那样,您无法发送硬编码值,而是传递您的真实值,以便在用户移动时或可能在特定时间段之后获取位置
  3. 编写逻辑:startLatlng = 用户移动时/一段时间后获得的新 Latlng 数据;
  4. 第一次 startLatlng = endLatlng(使用 if 条件和 boolian 并更改其值在它被调用之后)
  5. 使用(startLatlngendLatlng)调用您的方法绘制折线
  6. endLatlng = startLatlng(仅在调用该绘制方法后才能看到将起始值设置为结束值)

注意

如果它令人困惑,请使用真实值并尝试理解我解释的内容。 第一次都是一样的。 它是一个点,因为它们都在同一个地方。(我猜)现在 startLatlngendLatlng 都有第一个相同的值。

第二次新位置出现 startLatlng 更改。然后它不能转到那个 boolean if 方法,因为它只是第一次。

现在它调用该方法来绘制线( startLatlng endLatlng)。只有在调用该绘制方法后,您的 endLatlng 才会获得新的 startLatlng 值。

但是下次当您的完整逻辑再次使用非常新的数据调用时,非常新的数据将分配给 startLatlng

所以通过这种方式,它可以在 startLatlng(新位置)和 endLatlng(旧位置)之间划一条线。

关于android - 用户移动时在 Android 谷歌地图中绘制多段线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41293876/

相关文章:

android - 如何删除 Google Maps Android API v2 中的多段线?

javascript - Angular/ Cordova : MIME Type issue on android device

android - Gradle 同步和构建失败

java - 使用多个标记创建折线

google-maps - 谷歌地图默认 tiptool 倾斜箭头样式

python - 如何使用 python win32com.client 在 Excel 中添加折线?

Android 通过缩放级别增加多段线宽度(谷歌地图 V2)

java - Android:jar 库与项目库相比不起作用

java - 从 Realm 检索聊天消息的有效方法是什么?

javascript - 如何使用 Google Maps Api v3 在同一页面上全屏打开 google map ?