我正在Android中实现基于Map Kit的应用程序。我对这个sdk很新。我的问题是我需要在Map Region更改时触发方法。你们可以告诉我,当地区发生变化时可以解雇一个方法吗?
答案 0 :(得分:1)
当地图执行平移或缩放方法时,地图区域将发生变化但您无法从此方法获取任何信息,因此您可以通过onDraw方法进行操作。 要实现这一点,您必须继承MapView并重写onDraw方法。
如果你这样做,你可以获得限制显示区域的四个坐标,Projection类检索每个点的坐标(左上角[0,0],右上角[width-0],左下角[ 0,高度]和右下角[宽度,高度])。
例如,在第一个onDraw中:你得到这四个坐标,GeoPoint [4] init 在onDraw的第二次运行中,你得到了新的四个坐标,GeoPoint [4]结束, 所以在这里你可以比较各个地区。
这是一项昂贵的操作,因此延迟机制将有助于减缓变化检测...
答案 1 :(得分:0)
您可以使用MapView的onCameraChange事件,如下所示:
final Fragment mapFragment = getFragmentManager().findFragmentById(R.id.map);
mMap = ((MapFragment)mapFragment).getMap();
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
Point point = new Point(mapFragment.getView().getWidth() / 2 , mapFragment.getView().getHeight()/2);
LatLng l = mMap.getProjection().fromScreenLocation(point);
Log.v("asd","center lat: " + l.latitude + " center long: " + l.longitude + " ");
}
});