2011-01-28 41 views
0

我正在Android中實現一個基於Map Kit的應用程序。我對這個SDK非常陌生。我的問題是我需要在地圖區域更改時觸發一個方法。你們可以讓我知道當區域發生變化時是否可以發射一種方法?在地圖上的區域更改MapView Android的Sdk

+0

你說的地圖區域意思改變了? – Reno 2011-01-28 14:32:22

回答

1

地圖區域將在地圖執行平移或縮放方法時發生變化,但您無法從此方法獲取任何信息,因此您可以通過onDraw方法進行掃描。 爲了實現這一點,你必須繼承MapView並覆蓋onDraw方法。

如果你這樣做,你可以獲得限制顯示區域的四個座標,用Projection類檢索每個點的座標(左上角[0,0],右上角[寬度-0],左下角[0,高度]和右下[寬度,高度])。

例如,在第一個的onDraw:你這四個座標,GeoPoint的[4]的onDraw的第二次運行初始化 你得到新的四個座標,GeoPoint的[4]最後, 所以在這裏你可以比較區域。

這是一個昂貴的操作,所以延遲機制將有助於放緩的變化檢測...

+0

你可以用兩個座標來管理它 - 左上角和右下角(或者右上角和左下角) – NickT 2011-01-28 15:25:38

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

    } 
}); 
相關問題