android - 如何在 Xamarin 中为谷歌地图实现标记聚类

标签 android google-maps xamarin xamarin.android google-play-services

我已在我的应用程序中成功实现了 Google map 。我必须为 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?

最佳答案

您想使用包含 android-maps-utils.aar 文件的 Xamarin.Android 绑定(bind)项目。

注意:我有forked一个较旧的 Github 存储库,其中包含一个绑定(bind)项目和示例,并将其更新为最新版本的 android-maps-utils.aar(截至本文时为 v0.4.3)。

只需克隆该存储库并将整个 GoogleMapsUtility 项目复制到您的 Xamarin.Android 解决方案中,然后将其添加到您的解决方案中(通过添加现有项目)。

然后您可以像往常一样创建 Google map ,即:

GoogleMapOptions mapOptions = new GoogleMapOptions()
    .InvokeMapType(GoogleMap.MapTypeNormal)
    .InvokeZoomControlsEnabled(true)
    .InvokeMapToolbarEnabled(true)
    .InvokeZoomGesturesEnabled(true)
    .InvokeRotateGesturesEnabled(true)
    .InvokeCompassEnabled(true);

然后您可以将 map 标记添加到 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

关于android - 如何在 Xamarin 中为谷歌地图实现标记聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38323777/

相关文章:

java - NumberFormatException Android Java

javascript - 将数据从服务器发送到 js 文件.. 获取 Passport 以在 Google map 信息框上显示 Facebook 图像

java - Android GoogleMaps 在某些设备上不工作显示 java.lang.SecurityException : need INSTALL_LOCATION_PROVIDER permission

c# - Xamarin Forms 中缺少默认构造函数错误

ios - 实现Xamarin iOS语音转文本

android - 在 Debug模式下在 flutter 上显示特定的小部件

java - Android 到 node.js 的通信

android - Android 的 DisplayMetrics xdpi 和 ydpi 总是相等吗?

android - 如何从 PlaceAutocomplete api 获取城市和州名称?

ios - 如何访问我项目的资源文件夹中所有文件的列表?