2

我已經在我的應用程序中成功實現了Google Maps。我必須爲Xamarin Android實施標記羣集。如何在Xamarin中實現Google地圖的標記羣集

link這裏給出了關於如何實現的一個很好的解釋,但我無法理解如何引用這個包。

我有幾個源文件,但它並沒有幫助,因爲我不知道如何引用jar文件。我得到的文件與Java相關,但不是C#。這裏有幾個環節:

https://github.com/googlemaps/android-maps-utils https://forums.xamarin.com/discussion/13569/google-maps-android-api-utility-library-support/p2?

回答

5

您要使用的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

+0

這真是cool..I是能夠實現的功能。可能我的問題很愚蠢。我不確定.aar文件的作用。非常感謝!。這個線程對於像我這樣的初學者會有幫助。再次感謝您的詳細解釋。 – Dilip

+0

注意:它顯示'_mapFragment.Map'已過時:'已棄用'。將來它會成爲一個問題..到目前爲止,它的工作是完美的。 – Dilip

+1

@Dilip'aar'包是Android庫項目的二進制發行版。因此,這個'.aar'文件包含Google的實際Java類和資源(https://github.com/googlemaps/android-maps-utils)。 Xamarin.Android綁定項目提供了圍繞該Java代碼的「C#包裝器」,以允許它在Xamarin.Android/C#/ .Net世界中運行 – SushiHangover

相關問題