Xamarin地图 - 从自定义渲染器访问google api

时间:2016-02-16 16:35:36

标签: android xamarin xamarin.forms maps

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

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

我目前无法弄清楚如何将听众添加到像圆圈之类的东西。我正在尝试执行类似“google.maps.event.addListener”之类的操作,并将我的点击事件添加到一个圆圈中,但是我看不到这一点,也不是PolyLine的API点击事件。

2 个答案:

答案 0 :(得分:0)

是的,这是可能的。

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

例如,在DF <- data.frame(A = c(1, NA, 1, 2), B = c(NA, 3, 3, 5)) DF # A B # 1 1 NA # 2 NA 3 # 3 1 3 # 4 2 5 filter(DF, A == 1 | B == 3) # A B # 1 1 NA # 2 NA 3 # 3 1 3 DT <- as.data.table(DF) setkey(DT, "A", "B") 自定义渲染器中,您就可以访问并实例化Android之类的内容。

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

通过这样做,您可以根据自己的意愿公开尽可能多的Android.Gms.Maps.GoogleMap

更新1: -

要在GoogleMaps上将相机移动到其他缩放级别,您需要创建一个新的Android对象并指定CameraPosition作为参数。

然后你可以: -

Map Zoom Level

然后最终在var objCameraUpdate = CameraUpdateFactory.NewCameraPosition(objMyCameraPosition); 对象上调用GoogleMaps

答案 1 :(得分:0)

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

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

相关问题