【问题标题】:Getting a map marker ID in Google Maps v2在 Google Maps v2 中获取地图标记 ID
【发布时间】:2017-08-10 00:23:58
【问题描述】:

我正在从我的 SQLite 数据库中获取我的标记数据。我将这些数据存储在数组列表中。

在我的活动中,我还创建了 2 个标记之间的路线。 (其中一个标记是用户的当前位置)并且用户单击随机标记,它显示了该标记和用户当前位置之间的路线。 但我有问题。因为我不知道我怎么知道点击了哪个标记?有什么想法吗?

注意:我正在使用这项工作进行路由 https://github.com/akexorcist/Android-GoogleDirectionLibrary

我的数据库

MapsActivity.java

SQLiteDatabase db=dbHelper.getReadableDatabase();
        String[] getColumnName={"bakim_enlem,bakim_boylam,bakim_title"};
        Cursor imlec=db.query("bakim_yerleri", getColumnName, null, null, null, null, null);

        while(imlec.moveToNext())
        {
            mMap.addMarker(new MarkerOptions().position(new LatLng
                    (imlec.getDouble(imlec.getColumnIndex("bakim_enlem")),imlec.getDouble(imlec.getColumnIndex("bakim_boylam"))))
                    .title(imlec.getString(imlec.getColumnIndex("bakim_title"))).
                    icon(BitmapDescriptorFactory.fromResource(R.drawable.mapmarker)));

        }


        }



  //route code
@Override
public boolean onMarkerClick(final Marker marker)
{
   //in default, you can write here and down there-> LatLng marker1
   if (marker.equals(**?**))
    {
        CoordinatorLayout rootLayout = (CoordinatorLayout) findViewById(R.id.mapCoordinatorLayout);
        Snackbar.make(rootLayout, "Rota oluşturuluyor...", Snackbar.LENGTH_LONG).show();
        GoogleDirection.withServerKey(serverKey)
                .from(suanKonumumuz)
                .to(**?**)
                .transportMode(TransportMode.DRIVING)
                .execute(this);
    }
    return true;
}

【问题讨论】:

  • 您可以使用HashMap 将您的标记映射到额外的信息:stackoverflow.com/a/31272741/1584654
  • 但此链接包含 infowindows 点击事件。我有标记点击问题。而且它们的点击功能也大相径庭。
  • 是的,但我建议您应用相同的逻辑,在将标记添加到地图时使用 HashMap,然后在您的 onMarkerClick 中获取与标记相关的数据,使用map.get(marker)

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


【解决方案1】:

添加标记时,您始终可以使用 marker.setTag(ID),当用户单击标记时,请尝试 marker.getTag() 以找出单击了哪个标记。

【讨论】:

  • 我会试试的,会告诉你结果的。谢谢你好先生。
  • 好的,在我的代码中有“.to()”函数。这个函数接受 LatLng 数据类型。我的意思是我需要获取点击了哪个标记并获取它的位置。
  • 你从哪里得到这些标记?您的数据来源是什么?您的来源是否包含任何独特的东西?如果是,则将该 ID 设置为标记,然后在单击标记时检查标记并找出它是哪个标记。希望这是有道理的
  • 我正在为此使用 SQLite。我将它们保存在数据库中。但我有将近 25 个标记。
  • 当你在SQLite中存储数据时必须有一个主键?正确的?在地图上添加标记时,将该 id 设置为键。然后,当您从标记处获得回调时,从标记中获取 id,使用该 id 再次查询数据库并检索您的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多