提问者:小点点

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


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

然后将变量与代码一起发送到Google Maps片段:

 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为null,我会得到错误

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设置为本地的,我就不能从父方法中的按钮传递它,或者至少,我不知道如何传递。

我看过的大多数在线教程都是用用户的当前位置更新地图,而不是静态变量。

请帮助我更新我的地图位置onclick!


共1个答案

匿名用户

我有主意让你的Googlemap本地化,在onclick中传递Googlemap在函数中,所以把你的UpdateMap更改为

null

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)
            }
        });