【问题标题】:Xamarin Maps - access google api from custom rendererXamarin Maps - 从自定义渲染器访问 google api
【发布时间】:2016-02-16 16:35:36
【问题描述】:

有没有办法从 Xamarin Forms Maps 自定义渲染器中访问 google maps API?我想访问简单的东西,比如 setZoom 和 getZoom 或者向一个圆圈添加一个点击监听器。我意识到我可以使用 Xamarin 的 MapSpan 类进行缩放,但我想使用他们未能在 google maps API 中实现的许多功能。

更新 最终目标是创建圆形或小折线以用作额外的可点击对象。我真的不想要标记,因为我想动态地对它们进行颜色编码。我将使用这些可点击的对象来调用代码来创建一个交互式弹出窗口。我已经有了自定义渲染器。我需要 getZoom 是因为我只想在显示某个缩放级别或更高级别时显示这些项目,否则地图将只是一堆对象。

我目前不知道如何为圆圈之类的事物添加侦听器。我正在尝试执行类似“google.maps.event.addListener”之类的操作并将我的点击事件添加到一个圆圈中,但从我所看到的情况来看这是不可用的,PolyLine 的 API 点击事件也不是。

【问题讨论】:

    标签: android xamarin xamarin.forms maps


    【解决方案1】:

    是的,这是可能的。

    您必须编写自己的自定义渲染器才能完成此操作。

    例如,在 Android自定义渲染器 中,您将能够访问和实例化类似 Android.Gms.Maps.GoogleMap 的内容。

    您需要为您的Android 项目添加NuGet for GoogleMaps,然后才能看到Android.Gms.Maps.GoogleMap 命名空间等。

    通过这样做,您可以随心所欲地公开GoogleMaps

    更新 1:-

    要将相机移动到Android 上的不同缩放级别,您需要创建一个新的CameraPosition 对象并将Map Zoom Level 指定为参数。

    然后你可以:-

    var objCameraUpdate = CameraUpdateFactory.NewCameraPosition(objMyCameraPosition);
    

    最后在GoogleMaps 对象上调用.MoveCamera(objCameraUpdate)

    【讨论】:

    • 好的,我已经有了。查看该类,它是一个密封类,只有部分方法和属性集。示例:[Register("animateCamera", "(Lcom/google/android/gms/maps/CameraUpdate;)V", "")] public void AnimateCamera(CameraUpdate update);
    • setZoom 和 getZoom 没有提供。
    • 看起来它源自 Xamarin.GooglePlayServices.Maps.dll
    • @user3478586 我已经更新了我的答案(请参阅更新 1),详细说明如何将相机设置为新的缩放级别。
    • 感谢您的帮助...但这仍然不是我需要的答案。我想直接访问 API。我认为如果没有更新 GooglePlayServices 来添加所有 GoolgeMap 属性和方法或一起编写我自己的跨平台地图控件,这是不可能的。如果您可以提供一种将点击侦听器添加到 Circle 的方法,这将使我到达我需要的位置,我会将其标记为解决方案。谢谢
    【解决方案2】:

    如果您在 .Droid 项目中创建派生自 MapRenderer 的类,则您有一个名为 NativeMap 的属性,它是本机地图控件,它具有所有功能。

    但是,您正在尝试使用旧 API,setZoom 和 getZoom 不再存在,您必须使用 moveCamera,查看地图的 SDK 帮助:https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap

    【讨论】:

    • +1 向我展示了我正在查看旧 API。我已经知道 NativeMap。但是,它仍然缺少诸如 OnPolyLineClickListener 之类的东西。
    猜你喜欢
    • 2018-07-29
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2020-03-16
    相关资源
    最近更新 更多