【问题标题】:How to update the position of my map in Google maps on click?如何在点击时更新我的​​地图在 Google 地图中的位置?
【发布时间】: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 设为本地,则无法从父方法中的按钮传递它,或者至少我不知道如何传递。

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

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

【问题讨论】:

    标签: android android-studio google-maps android-fragments


    【解决方案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,你只需要一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 2017-01-02
      • 2014-06-16
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多