android - 无法在谷歌地图android上动态设置多个标记
问题描述
我正在使用推送器从另一台设备接收位置。在我的地图中,我想从推送器数据中动态显示多个标记。
我尝试了多种解决方案;但没有一个有助于实现我所需要的, 尝试了这篇文章
这是我的代码
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"
}
]
}
解决方案
尝试这个
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();
}
}
}
}
}
推荐阅读
- java - ReplaceAll 方法第二次不起作用
- javascript - 如何使用 Cropper.js 进行“缩放”和“旋转”
- angular - 使用不同的数据集在同一页面上渲染多个网格
- python - 优化数据框操作
- angular - 我们真的需要 URL 重写模块来在 IIS 上托管 Angular 应用程序吗?
- google-bigquery - 去年的星期几
- spring - javax.inject.Inject bean 在 Spring 引导中无法识别
- c - 为什么当我在它之前/之后有 printf() 时,“malloc():损坏的最大尺寸”错误得到修复?
- php - 无法连接主机:80:超时 cURL php
- c++ - C++ 和 wxWidgets DLL 创建和使用微软访问