嗨,我是Android的新手,而且我已经了解了android Google地图。我想实时跟踪用户移动并在android谷歌地图中绘制折线路径,有人可以帮我提供示例吗?我可以获得位置变动间隔,但仍然不知道如何将其应用于折线并将数据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
(如果条件为布尔值并在调用后更改其值,则使用)调用您的方法以使用(
startLatlng
和endLatlng
)绘制折线endLatlng
= startLatlng
(仅在调用该draw方法后将开始值设置为结束值)注意
如果令人困惑,请使用实际值,并尝试了解我的解释。
第一次都一样。
因为它们都在同一位置,所以它会点一个点。(我猜)现在
startLatlng
和endLatlng
都具有第一个相同的值。第二次新位置到
startLatlng
更改。然后它不能转到该布尔if方法,因为它是第一次。现在,它调用该方法绘制线条(新的
startLatlng
和旧的endLatlng)。只有在调用该draw方法之后,您的endLatlng
才会获得新的startLatlng
值。但是,下一次当您再次用一个非常新的数据调用完整逻辑时,这个非常新的数据将分配给
startLatlng
。因此,它可以在
startLatlng
(新位置)与endLatlng
(旧位置)之间划一条线。