关于MapView Android Sdk中的地图区域更改
我正在 Android 中实现一个基于 Map Kit 的应用程序。我对这个 sdk 很陌生。我的问题是,当地图区域发生变化时,我需要触发一个方法。你们能告诉我当区域改变时是否可以触发一个方法吗?
I am implementing a Map Kit based application in Android. I was very new to this sdk. My problem is that I need to fire a method when the Map Region changed. Can you guys please let me know is it possible to fire a method when the region is changed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当地图执行平移或缩放方法时,地图区域会发生变化,但您无法从这些方法中获取任何信息,因此您可以通过 onDraw 方法来实现。
要实现此目的,您必须子类化 MapView 并重写 onDraw 方法。
如果这样做,您可以获得限制显示区域的四个坐标,Projection 类检索每个点的坐标(左上[0,0]、右上[宽度-0]、左下[0,高度] 和右下角[宽度,高度] )。
例如,在第一个 onDraw 中:您得到这四个坐标,GeoPoint[4] init
在 onDraw 的第二次运行中,您将获得新的四个坐标,GeoPoint[4] 结束,
所以在这里你可以比较这些地区。
这是一项昂贵的操作,因此延迟机制将有助于减慢更改检测......
the map region will change when the map perform pan or zoom methods but you cannot obtain any info from this methods, so you can doit through the onDraw method.
To achieve this you have to subclass the MapView and overrides the onDraw method.
if you do this you can obtain the four coordinates that limits the region displayed, with Projection class retrieveing coordinates for each point ( top-left[0,0], top-right[width-0], bottom-left[0,height] and bottom-right[width,height] ).
in example, in the first onDraw: you get this four coordinates, GeoPoint[4] init
in the second run of onDraw you get the new four coordinates, GeoPoint[4] end,
so here you can compare the regions.
this is a expensive operation so a delay mechanism will be helpful to slowdown the changes detection...
您可以使用 MapView 的 onCameraChange 事件,如下所示:
You can use MapView's onCameraChange event like below: