您需要在您的 gradle 中添加这个/相关的 g.play services 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));
注意:修改折线的方法必须在主线程上调用,否则,将在运行时抛出IllegalStateException。
为了我知道你可以找到这段代码,所以这是我的小逻辑
- 保持开始和结束位置
Latlng变量(startLatlng,endLatlng)
- 正如您在示例中看到的那样,您不能发送硬编码值,传递您的真实值,因此在用户移动或可能在某个时间段之后获取位置
- 编写逻辑:
startLatlng = 用户移动/一段时间后获得的新 Latlng 数据;
-
仅第一次使用
startLatlng = endLatlng(使用带有布尔值的if条件,并在调用后更改其值)
- 调用你的方法用(
startLatlng和endLatlng)绘制折线
-
endLatlng = startLatlng(仅在调用该draw方法后将开始值设置为结束值)
注意
如果令人困惑,请使用真实值并尝试理解我解释的内容。
第一次两者都一样。
它是一个点,因为两者都在同一个位置。(我猜)现在startLatlng 和endLatlng 都具有第一个相同的值。
第二次新位置来startLatlng更改。然后它不能转到那个 boolean if 方法,因为它只是第一次。
现在它调用该方法来画线(new startLatlng 和 old endLatlng)。只有在您调用该 draw 方法后,您的 endLatlng 才会获得新的 startLatlng 值。
但是下次当你的完整逻辑再次被一个非常新的数据调用时,非常新的数据会分配给startLatlng。
所以通过这种方式,它可以在startLatlng(新位置)和endLatlng(旧位置)之间画一条线。