您要使用的Xamarin.Android
綁定項目,其中包括android-maps-utils.aar
文件。
注:我有forked一箇舊GitHub庫,其中包括一個結合項目,例如,它更新到android-maps-utils.aar
最新版本(v0.4.3
因爲這個職位的)。
只需克隆該回購併將整個GoogleMapsUtility
項目複製到您的Xamarin.Android
解決方案中,並將其添加到您的解決方案(通過添加現有項目)即可。
然後您可以創建一個谷歌地圖就像你通常會,即:
GoogleMapOptions mapOptions = new GoogleMapOptions()
.InvokeMapType(GoogleMap.MapTypeNormal)
.InvokeZoomControlsEnabled(true)
.InvokeMapToolbarEnabled(true)
.InvokeZoomGesturesEnabled(true)
.InvokeRotateGesturesEnabled(true)
.InvokeCompassEnabled(true);
然後,您可以將您的地圖標記爲ClusterManager
,讓它管理集羣:
_clusterManager = new ClusterManager(this, _map);
_clusterManager.SetOnClusterClickListener(this);
_clusterManager.SetOnClusterItemClickListener(this);
_map.SetOnCameraChangeListener(_clusterManager);
_map.SetOnMarkerClickListener(_clusterManager);
我修改原始示例以在日誌中創建20個標記。螺旋紋在不同的縮放級別測試羣集:
private void AddClusterItems()
{
double lat = 47.59978;
double lng = -122.3346;
var items = new List<ClusterItem>();
// Create a log. spiral of markers to test clustering
for (int i = 0; i < 20; ++i)
{
var t = i * Math.PI * 0.33f;
var r = 0.005 * Math.Exp(0.1 * t);
var x = r * Math.Cos(t);
var y = r * Math.Sin(t);
var item = new ClusterItem(lat + x, lng + y);
items.Add(item);
}
_clusterManager.AddItems(items);
}
![enter image description here](https://i.stack.imgur.com/FL6OV.gif)
這真是cool..I是能夠實現的功能。可能我的問題很愚蠢。我不確定.aar文件的作用。非常感謝!。這個線程對於像我這樣的初學者會有幫助。再次感謝您的詳細解釋。 – Dilip
注意:它顯示'_mapFragment.Map'已過時:'已棄用'。將來它會成爲一個問題..到目前爲止,它的工作是完美的。 – Dilip
@Dilip'aar'包是Android庫項目的二進制發行版。因此,這個'.aar'文件包含Google的實際Java類和資源(https://github.com/googlemaps/android-maps-utils)。 Xamarin.Android綁定項目提供了圍繞該Java代碼的「C#包裝器」,以允許它在Xamarin.Android/C#/ .Net世界中運行 – SushiHangover