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設置爲標記,然後在單擊標記時檢查標記並找出它是哪個標記。希望這是有道理的 –

相關問題