目前,默認情況下,在點擊標記時,地圖將以標記爲中心。有沒有辦法控制,引入一些偏移值。我有一個彈出式信息窗口,有時有點高,我想定位地圖,以便它不會在頂部切斷。在Android Maps V2中,有一種方法可以在標記點擊時控制地圖的位置?
2
A
回答
3
您可能會覆蓋GoogleMap標記點擊事件並在那裏調整相機。
例如
Maker lastOpened = null;
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
// Check if there is an open info window
if (lastOpened != null) {
// Close the info window
lastOpened.hideInfoWindow();
// Is the marker the same marker that was already open
if (lastOpened.equals(marker)) {
// Nullify the lastOpened object
lastOpened = null;
// Return so that the info window isn't opened again
return true;
}
}
// Open the info window for the marker
marker.showInfoWindow();
// Re-assign the last opened such that we can close it later
lastOpened = marker;
// Get the markers current position
LatLng curMarkerPos = marker.getPosition();
// Use the markers position to get a new latlng to move the camera to such that it adjusts appropriately to your infowindows height (might be more or less then 0.3 and might need to subtract vs add this is just an example)
LatLng camMove = new LatLng(curMarkerPos.latitude + 0.3, curMarkerPos.longitude);
// Create a camera update with the new latlng to move to
CameraUpdate camUpdate = CameraUpdateFactory.newLatLng(camMove);
// Move the map to this position
mMap.moveCamera(camUpdate);
// Event was handled by our code do not launch default behaviour.
return true;
}
});
mMap.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
if (lastOpened != null) {
// Hide the last opened
lastOpened.hideInfoWindow();
// Nullify lastOpened
lastOpened == null;
}
// Move the camera to the new position
final CameraPosition cameraPosition = new CameraPosition.Builder().target(point).zoom(mMap.getCameraPosition().zoom).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
});
此代碼處理不當經過測試,但至少應該給你一個偉大的開始。 onMarkerClick的默認行爲是移動攝像頭並打開信息窗口。所以重寫這個並實現你自己的應該允許你移動你的相機。
感謝,合作舉辦一年一度的
3
我修改了非常好的答案上面的人誰只是想刪除標記點擊移動到中心的默認行爲:
一下添加到setUpMap():
mMap.setOnMarkerClickListener(getMarkerClickListener());
然後添加方法:
Marker lastOpened = null;
public OnMarkerClickListener getMarkerClickListener() {
return new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
if (lastOpened != null) {
lastOpened.hideInfoWindow();
if (lastOpened.equals(marker)) {
lastOpened = null;
return true;
}
}
marker.showInfoWindow();
lastOpened = marker;
return true;
}
};
}
+1
獲取我的+1。像箱子裏的魅力那樣工作。謝謝! – PeteH
相關問題
- 1. Android地圖v2 - 在標記點擊時獲取標記位置
- 2. 在Android谷歌地圖v2中僅使標記點擊一次
- 3. 定製Android版Google地圖v2中標記的可點擊區域
- 4. 大可點擊標記谷歌android地圖api v2
- 5. Android Google Maps v2 - 將標記保留在地圖的中心
- 6. 在Android Google Maps API v2中標記用戶位置
- 7. Android谷歌地圖V2 - 在幾個標記上的OnInfoWindowClick點擊
- 8. 點擊標記打開提醒[maps v2]
- 9. 更新位置在Google地圖V2中標記和繪製路徑,同時在Android中行走/駕駛時
- 10. 在Google地圖中觸發地圖事件(如點擊標記)Android V2
- 11. Android Google Maps API V2 - 在地圖上標記區域
- 12. 單擊後,不要捕捉到標記點擊Android地圖v2
- 13. Android Maps v2 - 動畫標記
- 14. 在Android中有多少種方法可以找到位置...?
- 15. 谷歌地圖V2控制位置
- 16. 如何在Google Maps v2中獲取標記的位圖?
- 17. 有沒有一種方法可以跟蹤使用renderer.listenGlobal()偵聽點擊時執行點擊的位置?
- 18. Angular 2+ Google Maps從地圖上的點擊位置獲取座標以更新標記位置
- 19. 是否可以通過在Android V2 maps API中觸摸地圖來添加地圖標記?
- 20. 居中位圖標記(Google Maps Android API v2)
- 21. 在Android中將標記倒置Google地圖API V2
- 22. 在Android中使用谷歌地圖v2添加標記在觸摸的位置
- 23. 有沒有一種方法可以使android地圖中的google商店座標?
- 24. 在地圖上點擊設置標記
- 25. Android - 自動更新標記位置Google地圖api v2
- 26. 如何使android map maps v2中的地圖對象(例如:圓圈)可點擊?
- 27. 谷歌地圖Android API v2:是否有快速的方法來知道在指定位置是否有標記?
- 28. Google Maps API V2標記未顯示在正確的位置
- 29. 有沒有一種方法可以在Android中繪製圖形和圖表?
- 30. 在Google Maps v2中獲取地圖標記ID
有一個在邏輯DMAN小遺漏。當用戶點擊標記以外時,lastOpened需要重置,並且信息窗口消失。否則一個好的解決方案 – oviroa
@oviroa良好的捕獲,我不記得是否在MapClick上關閉了標記。我已經更新了答案(可否請您標記爲幫助他人的正確答案)。謝謝,DMan – DMCApps
其實還有一件事。 lastOpened字段不是必需的。你可以檢查marker.isInfoWindowShown()。此外,lastOpened.hideInfoWindow()不是必需的,默認情況下會處理它。 – oviroa