0

我从我的SQLite数据库中获取标记数据。我将这些数据存储在数组列表中。在Google Maps v2中获取地图标记ID

在我的活动中,我还创建了2个标记之间的路线。 (其中一个标记是用户的当前位置),然后用户单击随机标记,它会显示此标记与用户当前位置之间的路线。 但我有问题。因为我不知道如何知道点击了哪个标记?任何想法?

注:我使用本作品的路由 https://github.com/akexorcist/Android-GoogleDirectionLibrary

我的数据库screenshot

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; 
} 
+0

您可以使用'HashMap'将映射标记与额外信息:http://stackoverflow.com/a/31272741/1584654 – GVillani82

+0

但是,此链接包含infowindows点击事件。我有点击标记的问题。而他们的点击功能则完全不同。 –

+0

是的,但我建议你应用相同的逻辑,当你将标记添加到地图时,使用'HashMap',然后在'onMarkerClick'中获取与标记相关的数据,使用'map.get(marker )'。 – GVillani82

回答

1

当添加标记,你可以随时使用marker.setTag( ID),当用户点击标记时,尝试使用marker.getTag()来找出哪个标记被点击。

+0

我会试试,会让你知道结果。谢谢你,先生。 –

+0

好的,在我的代码中有“.to()”函数。这个函数接受LatLng数据类型。我的意思是我需要得到哪个标记被点击并获得它的位置。 –

+0

从哪里得到这些标记?你的数据来源是什么?您的源代码是否包含任何独特的内容?如果是,请将该ID设置为标记,然后在单击标记时检查标记并找出它是哪个标记。希望这是有道理的 –

相关问题