与标题和片段一起如何向标记添加额外数据?

Apa*_*ith 8 android json marker google-maps-markers google-maps-android-api-2

问题:我的远程服务器返回一个request.i 10多个值分析我的反应和使用循环我在地图上添加标记(在这里,我添加信息,以标题和摘要)(在这里我要额外的数据添加到标记,这样我可以在信息窗口点击事件中访问它)

在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();
                }
Run Code Online (Sandbox Code Playgroud)

是否可以为标记添加额外的值,以及标题和片段.或者我是以错误的方式解析.

Ale*_*amo 6

虽然 @worawee.s 可以完美地工作,但还有一个更优雅的解决方案,可以让您向对象添加附加信息Marker。所以要解决这个问题,可以使用Marker的setTag(Object tag)方法:

您可以使用此属性将任意对象与此标记关联。例如,对象可以包含有关标记所代表内容的数据。这比存储单独的地图更容易。作为另一个示例,您可以关联与数据集中的 ID 相对应的字符串 ID。


小智 4

这不是最好的解决方案,但这就是我在应用程序中所做的。

创建标记映射作为活动/片段中的私有字段。

private Map<Marker, ExtraDataObj> markersMap = new HashMap<Marker, ExtraDataObj>();
Run Code Online (Sandbox Code Playgroud)

当您生成标记时,还将标记和额外数据放入您的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);
Run Code Online (Sandbox Code Playgroud)

在你的 onInfoWindowClick 中从markersMap获取额外的数据

ExtraDataObj extraDataObj = markersMap.get(arg0) 
Run Code Online (Sandbox Code Playgroud)