【问题标题】:Along with title and snippet how to add extra data to marker?连同标题和片段如何向标记添加额外数据?
【发布时间】:2014-06-07 21:11:04
【问题描述】:

问题:我的远程服务器为请求返回 10 个多个值。我解析了我的响应并使用 for 循环我在地图上添加了标记(这里我向标题和 sn-p 添加了信息)。(这里我想添加额外的数据标记,以便我可以在信息窗口点击事件中访问它)

在 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();
                }

是否可以在标记上附加额外的值,以及标题和 sn-p。? 还是我解析错误?

【问题讨论】:

    标签: android json google-maps-markers google-maps-android-api-2 marker


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      private Map<Marker, ExtraDataObj> markersMap = new HashMap<Marker, ExtraDataObj>();
      

      当您生成标记时,还将标记和额外数据放入您的标记映射中

      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 中从 markerMap 获取额外数据

      ExtraDataObj extraDataObj = markersMap.get(arg0) 
      

      【讨论】:

      • 这没关系,我还提到了一个博客,他在其中这样解释。但是我们可以向标记添加额外的自定义数据吗?以便我以后可以使用它。?
      • 来自 google map v2 Marker 类参考 (developer.android.com/reference/com/google/android/gms/maps/…),我认为它目前没有你想要的。
      猜你喜欢
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多