嗨,我是 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。
为了我知道你可以找到这段代码所以这是我的小逻辑
- 保留开始和结束位置
Latlng
变量(startLatlng
,endLatlng
) - 正如您在示例中看到的那样,您无法发送硬编码值,而是传递您的真实值,以便在用户移动时或可能在特定时间段之后获取位置
- 编写逻辑:
startLatlng
= 用户移动时/一段时间后获得的新 Latlng 数据; - 仅 第一次
startLatlng
=endLatlng
(使用 if 条件和 boolian 并更改其值在它被调用之后) - 使用(
startLatlng
和endLatlng
)调用您的方法绘制折线 endLatlng
=startLatlng
(仅在调用该绘制方法后才能看到将起始值设置为结束值)
注意
如果它令人困惑,请使用真实值并尝试理解我解释的内容。
第一次都是一样的。
它是一个点,因为它们都在同一个地方。(我猜)现在 startLatlng
和 endLatlng
都有第一个相同的值。
第二次新位置出现 startLatlng
更改。然后它不能转到那个 boolean if 方法,因为它只是第一次。
现在它调用该方法来绘制线(新 startLatlng
和旧 endLatlng)。只有在调用该绘制方法后,您的 endLatlng
才会获得新的 startLatlng
值。
但是下次当您的完整逻辑再次使用非常新的数据调用时,非常新的数据将分配给 startLatlng
。
所以通过这种方式,它可以在 startLatlng
(新位置)和 endLatlng
(旧位置)之间划一条线。
关于android - 用户移动时在 Android 谷歌地图中绘制多段线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41293876/