在MapView Android Sdk中的地图区域更改

时间:2011-01-28 14:15:11

标签: android android-mapview

我正在Android中实现基于Map Kit的应用程序。我对这个sdk很新。我的问题是我需要在Map Region更改时触发方法。你们可以告诉我,当地区发生变化时可以解雇一个方法吗?

2 个答案:

答案 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 + " ");

    }
});