如何在点击时更新我的地图在 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 地图中的位置?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中步行/驾驶时更新位置标记并在 Google 地图上绘制路径