【问题标题】:Draw a polyline in Android google maps as the user move用户移动时在 Android 谷歌地图中绘制折线
【发布时间】:2016-12-23 01:06:50
【问题描述】:

嗨,我是 Android 新手,我了解了 android 谷歌地图。我想实时跟踪用户移动并在 android 谷歌地图中绘制折线路径,有人可以帮我举个例子吗?我可以获得位置更改间隔,但仍然不知道如何将其应用到折线并将数据 LatLng 保存到数组中。

【问题讨论】:

标签: android google-maps polyline


【解决方案1】:

您需要在您的 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

为了我知道你可以找到这段代码,所以这是我的小逻辑

  1. 保持开始和结束位置Latlng变量(startLatlng,endLatlng
  2. 正如您在示例中看到的那样,您不能发送硬编码值,传递您的真实值,因此在用户移动或可能在某个时间段之后获取位置
  3. 编写逻辑:startLatlng = 用户移动/一段时间后获得的新 Latlng 数据;
  4. 第一次使用startLatlng = endLatlng(使用带有布尔值的if条件,并在调用后更改其值)
  5. 调用你的方法用(startLatlngendLatlng)绘制折线
  6. endLatlng = startLatlng(仅在调用该draw方法后将开始值设置为结束值)

注意

如果令人困惑,请使用真实值并尝试理解我解释的内容。 第一次两者都一样。 它是一个点,因为两者都在同一个位置。(我猜)现在startLatlngendLatlng 都具有第一个相同的值。

第二次新位置来startLatlng更改。然后它不能转到那个 boolean if 方法,因为它只是第一次。

现在它调用该方法来画线(new startLatlngold endLatlng)。只有在您调用该 draw 方法后,您的 endLatlng 才会获得新的 startLatlng 值。

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

所以通过这种方式,它可以在startLatlng(新位置)和endLatlng(旧位置)之间画一条线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2016-05-14
    • 2017-03-02
    • 2014-03-19
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    相关资源
    最近更新 更多