无法在谷歌地图android上动态设置多个标记
Posted
技术标签:
【中文标题】无法在谷歌地图android上动态设置多个标记【英文标题】:Unable to set Multiple markers dynamically on google maps android 【发布时间】:2019-11-08 07:53:39 【问题描述】:我正在使用推送器从另一台设备接收位置。在我的地图中,我想从推送器数据中动态显示多个标记。
我尝试了多种解决方案;但没有一个有助于实现我所需要的, tried this post
这是我的代码
JSONObject jsonObject1 = new JSONObject(DataFromPusher);
JSONArray jsonArray = jsonObject1.getJSONArray("Userlocation");
for (int i =0; i < jsonArray.length(); i++)
jsonObject = jsonArray.getJSONObject(i);
lat = jsonObject.getString("Userlatitude");
lng = jsonObject.getString("Userlongitude");
cor = new LatLng(Double.parseDouble(lat),Double.parseDouble(lng));
runOnUiThread(new Runnable()
@Override
public void run()
if (marker != null)
marker.remove();
marker = mMap.addMarker(new MarkerOptions().position(cor).title(lat+ " " +lng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
);
推送响应:
"Userlocation": [
"Userlatitude": "12.9325340",
"Userlongitude": "77.5450430"
,
"Userlatitude": "12.9325350",
"Userlongitude": "77.5450440"
]
【问题讨论】:
这两点相差 0.1553 米(或 6 英寸),因此很可能有 2 个标记 - 一个在另一个之上。但更重要的是,您的代码实际上删除了前一个标记 - 所以是的,您只会看到一个标记。 @Andy 是的,我也是这么想的,它可能会重叠,但我不确定。删除标记的原因是。我只想显示从推送数据接收到的当前位置。 【参考方案1】:试试这个
for (int i = 0; i < jsonArray.length(); i++)
JSONObject jsonObject;
try
jsonObject = jsonArray.getJSONObject(i);
String name = jsonObject.getString("name");
String lat = jsonObject.getString("lat");
String lng = jsonObject.getString("lng");
final MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(new LatLng(Double.parseDouble(lat), Double.parseDouble(lng)));
markerOptions.snippet(name);
Marker marker = googleMapWhole.addMarker(markerOptions);
markerList.add(marker);
catch (JSONException e)
e.printStackTrace();
【讨论】:
以上是关于无法在谷歌地图android上动态设置多个标记的主要内容,如果未能解决你的问题,请参考以下文章