如何在点击时更新我的​​地图在 Google 地图中的位置?

Posted

技术标签:

【中文标题】如何在点击时更新我的​​地图在 Google 地图中的位置?【英文标题】:How to update the position of my map in Google maps on click? 【发布时间】:2021-06-28 12:59:11 【问题描述】:

在我的应用程序中,我有一个按钮,可以从数据库中提取经度和纬度,并将它们存储到两个变量中,这些变量存储在名为 bgworker 的类中,然后这些变量显示在屏幕上,如下所示: https://i.imgur.com/5ld231v.png

然后我将变量与代码一起发送到我的 Google 地图片段:

 public static void UpdateMap() 
            double Longitute = parseDouble(bgWorker.ReturnLong());
            double Latitude = parseDouble(bgWorker.ReturnLat());
            LatLng Location = new LatLng(Latitude, Longitute);
            googleMap.addMarker(new MarkerOptions().position(Location).title("The location"));
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(Location));
        

但是,地图片段本身永远不会更新,并且坐标始终设置为 0,0 每当更新变量时(单击按钮),我如何更新地图上的位置

我遇到的两个问题是,如果我将 Googlemap 设为全局,GoogleMap 为空,我会收到错误

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference

但是,如果我将 Googlemap 设为本地,则无法从父方法中的按钮传递它,或者至少我不知道如何传递。

我在网上看到的大多数教程都涉及使用用户当前位置更新地图,而不是静态变量。

请帮我更新一下我的地图位置!

【问题讨论】:

【参考方案1】:

我有想法将您的 Googlemap 设为本地,并在 onclick 中通过 googleMap 功能将您的 UpdateMap 更改为

public static void UpdateMap(GoogleMap map) 
            double Longitute = parseDouble(bgWorker.ReturnLong());
            double Latitude = parseDouble(bgWorker.ReturnLat());
            LatLng Location = new LatLng(Latitude, Longitute);
            map.addMarker(new MarkerOptions().position(Location).title("The location"));
            map.moveCamera(CameraUpdateFactory.newLatLng(Location));
        
        
        //and onClickListener Pass Goole Map
        
        
          Your_button.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
              UpdateMap(googleMap)
            
        );

【讨论】:

这不起作用,因为有我的按钮的类不包含任何谷歌地图。如果我制作本地 googlemap,则会出现与制作 googlemaps 全局相同的问题,它是一个空引用对象 i.imgur.com/YVysUQv.png 你是否插入了你的对象 GoogleMap true? 持有按钮的类不能持有谷歌地图,所以我不能插入一个。如果我强制类保存 GoogleMaps 以插入 GoogleMap,我会收到上面显示的错误,如果我尝试调用 GoogleMap 函数来创建 GoogleMap,我会收到同样的错误。 和之前i.imgur.com/yr8zZ1h.png一样的错误【参考方案2】:

不确定这是否在 SO 规则范围内,但对于将来有相同问题的任何人,我得出的答案是将 GoogleMap 片段存储在与按钮相同的活动中,使按钮使用刷新整个活动startActivity(getIntent()); 然后在 googlemap 活动中获取坐标。

意味着每次加载 googlemap 时,它都会抓取新坐标并刷新到新位置!我的错误是每次按下按钮时都试图创建一个新的 googlemap,你只需要一个。

【讨论】:

以上是关于如何在点击时更新我的​​地图在 Google 地图中的位置?的主要内容,如果未能解决你的问题,请参考以下文章

点击标记时如何更新谷歌地图标记图像

Google 地图:当前位置标记(地图的定期更新)

如何在 Meteor 中向 Google 地图添加新标记?

在 Android 中步行/驾驶时更新位置标记并在 Google 地图上绘制路径

如何在 Android 中像在 Google 地图中一样获得持续的位置更新?

如何使用实时导航在Kotlin的Google地图上绘制最短路径?