我已在我的应用中成功实施了Google地图。我必须为 Xamarin Android实现标记聚类。
这里的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?
答案 0 :(得分:5)
您想要使用包含Xamarin.Android
文件的android-maps-utils.aar
绑定项目。
注意:我有forked一个旧的Github仓库,其中包含一个绑定项目和示例,并将其更新为android-maps-utils.aar
的最新版本(截至此帖子为v0.4.3
)。
只需克隆该repo并将整个GoogleMapsUtility
项目复制到您的Xamarin.Android
解决方案中,然后将其添加到您的解决方案中(通过添加现有项目)。
然后您可以像平常一样创建Google地图,例如:
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);
}