嗨,我是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变量(startLatlngendLatlng
在示例中可以看到,您无法发送硬编码值,不能传递真实值,因此请在用户移动时或可能在特定时间段后获取位置
写入逻辑:startLatlng =用户移动/一段时间后获得的新Latlng数据;
仅第一次startLatlng = endLatlng(如果条件为布尔值并在调用后更改其值,则使用)
调用您的方法以使用(startLatlngendLatlng)绘制折线
endLatlng = startLatlng(仅在调用该draw方法后将开始值设置为结束值)


注意

如果令人困惑,请使用实际值,并尝试了解我的解释。
第一次都一样。
因为它们都在同一位置,所以它会点一个点。(我猜)现在startLatlngendLatlng都具有第一个相同的值。

第二次新位置到startLatlng更改。然后它不能转到该布尔if方法,因为它是第一次。

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

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

因此,它可以在startLatlng(新位置)与endLatlng(旧位置)之间划一条线。

08-05 02:53