【问题标题】:How to include ID in marker in addition to title and snippet除了标题和片段之外,如何在标记中包含 ID
【发布时间】:2018-07-10 02:51:22
【问题描述】:

在map android studio 中addMarker 时,我只能输入title 和sn-p。 怎么添加id等其他参数? 我稍后可以在单击标记时得到它。

private void addMarker(LatLng latlng, final String title, final String deskripsi, final String id) {
   markerOptions.position(latlng);
   markerOptions.title(title);
   markerOptions.snippet(deskripsi);

   gMap.addMarker(markerOptions);

   gMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
   @Override
       public void onInfoWindowClick(Marker marker) {
           Toast.makeText(getApplicationContext(), marker.getTitle(), Toast.LENGTH_SHORT).show();
       }
   });
}

【问题讨论】:

    标签: java android google-maps android-studio google-maps-markers


    【解决方案1】:

    如何添加id等其他参数?

    除了标记 ID,您还希望设置哪些其他字段?

    当我们使用GoogleMap.addMarker 创建标记时,会自动生成标记 ID。您可以做的是在创建标记后,使用HashMap 映射所有标记ID,并在getInfoWindow(Marker marker)getInfoContents(Marker marker) 内部使用marker.getId() 继续。

    【讨论】:

      【解决方案2】:

      您可以使用#marker.setTag

      例如:

      Marker marker = mMap.addMarker(markerOptions);
      marker.setTag([You can give here]); // marker.setTag(30)
      

      稍后你可以使用getTag

      int id = (int) marker.getTag();
      

      【讨论】:

        【解决方案3】:

        要唯一标识您的标记,请使用:

        setTag(Object obj)
        

        要检索,请使用:

        getTag()
        

        请参阅此处发布的答案: How to set tag to Google Map's marker in Android?

        【讨论】:

          【解决方案4】:

          使用一个Hashmap来存储marker和ids

             private HashMap<Marker, Integer> markerIdMapping = new HashMap<>();
          
          
           private void addMarker(LatLng latlng, final String title, final String deskripsi, final String id) {
                  markerOptions.position(latlng);
                  markerOptions.title(title);
                  markerOptions.snippet(deskripsi);
          
                  Marker marker = gMap.addMarker(markerOptions);
                  markerIdMapping.put(marker, id);
          
                  gMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                      @Override
                      public void onInfoWindowClick(Marker marker) {
                          Toast.makeText(getApplicationContext(), marker.getTitle(), Toast.LENGTH_SHORT).show();
                          String markerId = markerIdMapping.get(marker);
                      }
                  });
              }
          

          【讨论】:

          • 如何包含多个ID?
          • 您可以在哈希映射的值部分使用整数数组,例如 HashMap markerIdMapping = new HashMap();
          猜你喜欢
          • 1970-01-01
          • 2022-10-14
          • 2014-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-10
          • 1970-01-01
          • 2011-03-07
          相关资源
          最近更新 更多