Android 在Google Maps v2中获取地图标记ID
我正在从SQLite数据库获取标记数据。我将这些数据存储在数组列表中 在我的活动中,我还创建了两个标记之间的路线。其中一个标记是用户的当前位置,用户单击随机标记,它将显示此标记和用户当前位置之间的路线。 但我有问题。因为我不知道我怎么知道哪个标记被点击了?有什么想法吗 注意:我将此工作用于路由 我的数据库 MapsActivity.javaAndroid 在Google Maps v2中获取地图标记ID,android,google-maps,google-maps-markers,google-maps-android-api-2,Android,Google Maps,Google Maps Markers,Google Maps Android Api 2,我正在从SQLite数据库获取标记数据。我将这些数据存储在数组列表中 在我的活动中,我还创建了两个标记之间的路线。其中一个标记是用户的当前位置,用户单击随机标记,它将显示此标记和用户当前位置之间的路线。 但我有问题。因为我不知道我怎么知道哪个标记被点击了?有什么想法吗 注意:我将此工作用于路由 我的数据库 MapsActivity.java 添加标记时,您可以始终使用marker.setTagID,当用户单击标记时,请尝试marker.getTag以查找单击的标记。您可以使用HashMap将标
添加标记时,您可以始终使用marker.setTagID,当用户单击标记时,请尝试marker.getTag以查找单击的标记。您可以使用HashMap将标记与其他信息进行映射:但此链接包含infowindows单击事件。我对标记单击有问题。是的,但我建议你应用相同的逻辑,在你将标记添加到映射时使用HashMap,然后在你的onMarkerClick中使用map.getmarker获取与标记相关的数据。我会尝试一下,让你知道结果。谢谢你,好的,先生。好的,在我的代码中有。功能。此函数接受LatLng数据类型。我的意思是我需要得到哪个标记被点击并得到它的位置。你从哪里得到这些标记?您的数据来源是什么?您的源代码是否包含唯一的内容?如果是,将该Id设置为标记,然后单击标记时,检查标记并找出它是哪个标记。希望这能让老师明白我在用SQLite做这个。我把它们保存在数据库里。但我几乎有25个标记。当你在SQLite中存储数据时,必须有一个主键吗?正当在地图上添加标记时,将该id设置为键。然后,当您从marker获得回调时,从tag获得id,使用该id再次查询数据库并检索数据。
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;
}