如果没有,您需要在 gradle 中添加此/相关的 g.play 服务版本行。
compile 'com.google.android.gms:play-services-maps:8.4.0'
As 官方文档 https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline说,使用这个代码。
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));
Note:修改折线的方法必须在主线程上调用,如果没有,则非法状态异常将在运行时抛出。
为了我知道你可以找到这段代码,所以这是我的小逻辑
- 保持开始和结束位置
Latlng
变量(startLatlng
,endLatlng
)
- 正如您在示例中看到的,您无法发送硬编码值,而是传递您的真实值,因此在用户移动时或可能在特定时间段后获取位置
- 编写逻辑:
startLatlng
= 用户移动/一段时间后获得的新 Latlng 数据;
-
only首次
startLatlng
= endLatlng
(使用 if 条件boolian并在调用后更改其值)
- 调用您的方法来绘制折线 (
startLatlng
and endLatlng
)
-
endLatlng
= startLatlng
(仅在调用该绘制方法将起始值设置为结束值后才可见)
Note
如果令人困惑,请使用真实值并尝试理解我所解释的内容。
第一次两个都一样。
它变成了一个点,因为两者都在同一个位置。(我猜)现在startLatlng
& endLatlng
两者都具有相同的第一个值。
第二次新地点来了startLatlng
改变。那么它就不能去那个booleanif 方法,因为这只是第一次。
现在它调用该方法来画线(new startLatlng
and old结束拉丁语)。只有在调用该绘制方法之后,您的endLatlng
得到新的startLatlng
value.
但是下次当您的完整逻辑再次使用非常新的数据调用时,非常新的数据会分配给startLatlng
.
因此,通过这种方式,它可以在startLatlng
(新职位)至endLatlng
(旧职位)。