2017-09-14 76 views
2

下面是我的實現,當我點擊它時,我看不到任何關於我的標記的描述。我甚至經歷了很多來源,但無法取得工作。尋找積極的出路。如何在用戶點擊osmdroid map中的標記時設置標記片段?

public Marker addMarker(GeoPoint p) { 

    Marker marker = new Marker(osm); 
    marker = new Marker(osm); 
    marker.setPosition(p); 
    osm.getOverlays().add(marker); 
    marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM); 
    marker.setIcon(getResources().getDrawable(R.drawable.black)); 
    marker.setTitle("Marker"); 
    marker.setSnippet("Snippet marker"); 
    marker.setSubDescription("SubDescription marker"); 
    return marker; 

} 
+0

您是否看到沒有文字的氣泡(InfoWindow)或者根本沒有看到氣泡?有沒有代碼在創建後將onClickListener設置爲標記? –

+0

我沒有看到氣泡,我爲每個標記創建了新的對象geopoints – himagaran

+0

好的,再次提出問題:您是否在任何地方調用marker.setOnMarkerClickListener(...)?這不是在你發佈的代碼中,但我不知道你如何處理退貨價值。 –

回答

1

您的代碼是正確的,應該工作。您應該使用最新版本的openstreetmap庫並相應地修改代碼。 Latest version目前爲5.​​6.5。

快速製作的例子給這個結果(TAP後):

enter image description here

我不得不註釋掉該行:

marker.setIcon(getResources().getDrawable(R.drawable.black)); 

因爲我沒有被拉伸。

從osmbonuspack使用的類不再存在,因爲它們被移動到osmdroid庫。你將不得不改變你的導入(例如到org.osmdroid.views.overlay.Marker等)。您可以完全刪除osmbonuspack依賴項,因爲您提供的代碼不需要它。

你將不得不改變瓷磚源的建設:

osm.setTileSource(TileSourceFactory.MAPNIK); 

(但請記住有a usage policy爲OpenStreetMap的瓷磚。)

最後說明:用彩筆常見的問題是,當您設置自定義的onMarkerClickListener,而不是默認實現不被調用。您需要通過調用marker.showInfoWindow()從您的偵聽器中打開標記窗口。但這不是你的問題。

+0

嘿,謝謝你的努力,我很高興它在你的工作。我需要澄清一件事:此鏈接https://drive.google.com/file/d/0ByXacZESDmJRQWYzblNINEY5Zjg/view顯示我的外部庫與他們的版本下libs部分。即使將庫升級到最新版本後,我仍然面臨同樣的問題 – himagaran

+0

@himagaran爲什麼使用過時版本的庫?你的項目中有osmdroid 4.3。舊版本可能存在錯誤和問題。我通常可以通過閱讀庫的源代碼來找到問題的解決方案。但我不認爲我會去學習那些舊版本,因爲它不值得。另外你爲什麼不使用gradle?您已經通過gradle詢問了osmdroid的最新版本:https://stackoverflow.com/questions/45930978/i-get-an-error-on-getinstance-method-even-though-i-followed-the-osmdroid-docum你得到了你的問題的答案。 –

+0

由於我的電腦內存不足,我停止了gradle。無論如何,我會再次檢查並讓你知道。再次感謝 – himagaran

相關問題