【问题标题】:How to add the marker on the map after camera animation has finished相机动画完成后如何在地图上添加标记
【发布时间】:2015-07-14 07:38:27
【问题描述】:

我正在尝试绘制显示用户当前位置的标记,尽管我在初始化地图时启用了 setMycurrentLocation,所以我得到了当前位置的纬度和经度。现在我正在做的是在当前位置显示标记。我就是这样做的

googleMap.animateCamera(CameraUpdateFactory.zoomTo(15), 8000, new GoogleMap.CancelableCallback() {
                                    @Override
                                    public void onFinish() {
                                        Handler handler1 = new Handler();
                                        handler1.postDelayed(new Runnable() {
                                            public void run() {

                                                addMarker(googleMap.getLocation.getLatitude(), googleMap.getLocation.getLatitude());

我的 addMarker 函数是这样的

private void addMarker(Double Lat, Double Long) {

        /** Make sure that the map has been initialised **/
        if (null != googleMap) {
            googleMap.addMarker(new MarkerOptions()
                            .position(new LatLng(Lat, Long))
                            .title("You")
                            .draggable(true)
            );
        }
    }

所以这种添加标记的代码和平只有在我使用地图动画的完成功能之外尝试它时才有效,但是

有时它会给我一个空值,因为有时它无法从地图中获取位置。 所以我试着把它放在相机停止动画之后。

但在我的情况下它不起作用,知道吗?或者我还有什么其他方法 相机停止动画时可以添加标记吗?

【问题讨论】:

  • 你不需要“postDelayed”,当动画完成后,你就做你想做的事。您是否删除了之前创建的标记?
  • 但如果我不执行帖子延迟应用程序崩溃,看起来地图不会立即返回位置
  • @NDorigatti 我想放置多个标记,实际上在其他功能中我正在从网络服务获取标记 ID,我想放置许多多个标记,但在相机停止动画之后
  • 如果不延迟会发生哪种崩溃?应用程序不应该崩溃,因为回调在主线程上,即地图线程
  • 添加标记行出现空点异常错误 addMarker(googleMap.getLocation.getLatitude(), googleMap.getLocation.getLatitude());

标签: android google-maps


【解决方案1】:

从 cmets 和代码来看,您似乎希望在地图上拥有多个用户位置标记,但您用于获取用户位置的代码不正确(我找不到 googleMap.getLocation,也许代码不完整)。 谷歌地图的 getMyLocation() 方法已弃用: https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#getMyLocation()

此方法已弃用。

使用 com.google.android.gms.location.FusedLocationProviderApi 代替。 FusedLocationProviderApi 提供改进的位置查找和功能 使用并由“我的位置”蓝点使用。见 例如,示例应用程序文件夹中的 MyLocationDemoActivity 示例代码,或位置开发者指南。

链接指向https://developers.google.com/maps/documentation/android/location

然后你使用 FusedLocationProvider 的端口。您必须查看该指南以获取用户位置。完成后,您可以将该代码放入 onFinish 回调中。

如果您需要融合位置提供者的帮助,也许您应该检查已经存在的问题或使用适当的标签打开一个新问题!

【讨论】:

  • 所以为了获取位置,我正在使用设备的 GPS,这不是一个好主意
  • 是的,设备的 gps 很好,但 google 已弃用从 googlemaps 获取位置的“旧”方式,而是建议使用 FusedLocationAPI 进行位置更新。老实说,我从未使用过它们,但从示例和网上的大量讨论来看,它应该很容易实现。您也可以使用“老式”位置侦听器,但比 fusedlocationapi 更耗电池。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2021-10-18
  • 2015-04-08
  • 2018-11-06
  • 1970-01-01
相关资源
最近更新 更多