问题:我的远程服务器为request.i返回10个多值。解析了我的响应并使用for循环我在地图上添加了标记(这里我将信息添加到标题和片段)。(这里我想添加额外的数据到标记,以便我可以在信息窗口点击事件中访问它
在infoWindowClickListener中的我想访问那些额外的数据。
如何将额外数据添加到标记/如何访问特定标记点击的ph数据(否则我将获得所有标记中ph的最后一个值)。
我试过这样。
private class HttpGetTask extends AsyncTask<Void, Void, String>
{
//URL and http stuff
}
@Override
protected void onPostExecute(String result) {
try {
json = new JSONArray(result);
for (int i = 0; i < json.length(); i++) {
Log.v("Response", result);
final JSONObject e = json.getJSONObject(i);
String point = e.getString("point");
Log.v("POINT", point);//Checking points
String phone1 = e.getString("ph");
Log.v("PH", phone1);//Checking phone numbers
String[] point2 = point.split(",");//Splitting points
double lat1 = Double.parseDouble(point2[0]);
double lng1 = Double.parseDouble(point2[1]);
Log.v("LLDN", "" + lat1 + "&" + lng1);
//Adding multiple markers
//can i add extra information here along with title and snippet
gMap.addMarker(new MarkerOptions()
.title(e.getString("name"))
.snippet(
e.getString("LS")+""+e.getString("ph") )
.position(new LatLng(lng1, lat1))
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.pmr)));
}
} catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
是否可以为标记添加额外的值以及标题和片段。 或者我是以错误的方式解析。?
答案 0 :(得分:3)
不是最好的解决方案,但这是我在申请中所做的。
将markersMap创建为活动/片段中的私有字段。
private Map<Marker, ExtraDataObj> markersMap = new HashMap<Marker, ExtraDataObj>();
生成标记时,还要将标记和额外数据放在markersMap
中ExtraDataObj extraDataObj = new ExtraDataObj();
// extract and store all data you want in the extraDataObj
....
...
..
Marker marker = gMap.addMarker(new MarkerOptions()
.title(e.getString("name"))
.snippet(
e.getString("LS")+""+e.getString("ph") )
.position(new LatLng(lng1, lat1))
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.pmr)));
markersMap.put(marker, extraDataObj);
在onInfoWindowClick中从markersMap获取额外数据
ExtraDataObj extraDataObj = markersMap.get(arg0)
答案 1 :(得分:1)
虽然@ worawee.s可以很好地工作,但是有一个更优雅的解决方案,可以让您向Marker
对象添加其他信息。因此,要解决此问题,可以使用Marker的setTag (Object tag)方法:
您可以使用此属性将任意Object与此标记关联。例如,对象可以包含有关标记表示的数据。这比存储单独的地图容易。另一个示例,您可以将与数据集中的ID相对应的字符串ID关联起来。