0

我正在創建一個顯示Parse查詢結果的地圖。我可以直接將信息傳遞給標記,例如標題或lat/long,但我希望包含一些額外的信息(不會顯示),當用戶單擊標記時可以使用這些信息。 例如,當用戶點擊標記時,我想從Parse查詢(它只是一個字符串)中查找用戶的objectId。 我試過下面的代碼在標記onClickListener把字符串作爲參數:可以使用地圖標記包含哪些參數

destPosition = marker.getPosition(); 
destLat = destPosition.latitude; 
destLong = destPosition.longitude; 
MarkerDialogFragment markerDialogFragment = new MarkerDialogFragment(); 
Bundle args = new Bundle(); 
args.putString("id", marker.getId()); 
args.putString("userId", userId); 
args.putString("title", marker.getTitle()); 
args.putDouble("latitude", destLat); 
args.putDouble("longitude", destLong); 
markerDialogFragment.setArguments(args); 

當我嘗試通過獲取的參數提取的「另一面」這個數據,該用戶ID總是跨爲空...我定義的userid例如:

final String userId = parseUsers.get(i).getObjectId(); 

我甚至嘗試硬編碼的userid這樣的字符串,它仍然回來爲空,當我試圖得到的參數:

final String userId = "test userId"; 

下面是標記onCreateDialog方法得到的參數代碼:

builder = new AlertDialog.Builder(getActivity()); 
    final String markerId = getArguments().getString("id"); 
    final String userId = getArguments().getString("userId"); 
    final String title = getArguments().getString("title"); 
    final double destLat = getArguments().getDouble("latitude"); 
    final double destLong = getArguments().getDouble("longitude");   
    builder.setTitle(title) 

當我使用調試器停止代碼,看看這些值,預期所有數據集,我有值除每個項目用戶名。任何人都可以幫助我指出正確的方向嗎?我只是想傳遞一個與變量相關的值,並將其與地圖上創建的每個標記綁定。謝謝!

+0

我想嵌入參考ID到標記信息窗口。當用戶點擊信息窗口時,它應該將參考ID傳遞給新的意圖。我可以在一個片段中傳遞我想要的字符串,但我不希望用戶真正看到這些信息 –

回答

0

您無法將數據添加到標記。 所以,如果你想要更多的數據添加到您的標記,你將不得不將其與標記的ID存儲在外部變量(的getID())

如 -

HashMap<int,Object> extramarkerData = new HashMap<int,Object>(); 

,並把數據放到HashMap中

extramarkerData.put(marker.getId(),"additional data"); 
+0

好的,如果我創建hashmap來存儲這些數據,我將如何在「另一側」提取這些數據,當我試圖獲取這些數據來查詢額外的數據?我假設有某種extramarkerData.get(marker.getId())函數? –

+0

準確地檢索您必須使用的數據: 'extramarkerData.get(marker.getId())function' – Gaurav

+0

非常感謝。我搜索了幾個小時,只找到關於如何定製窗口的信息。這很好,謝謝! –

相關問題