困擾了我很久的問題終於要得到解決了,先歡喜一下。
我的目的是想做一個當程序完全退出后,再次打開程序地圖直接顯示上次程序退出前地圖的范圍。arcgis for android官方軟件就有這個功能。網上搜索了一些關於activity保存狀態的方法,但是這些方法只能保存非銷毀后的Activity,即當程序完全退出后,采用這種方法程序是不能保存Activity狀態的。所以想着用數據庫保存狀態的方法。
我的方法是初始化的時候去讀取數據庫,如果里面有Extent的記錄,則加載這條記錄作為iniExtent的值,如果沒有則插入一條記錄初始化,以后程序退出前,獲取當前的extent,將這個矩形的左下角及右上角兩個點坐標更新到數據庫有,以便下次程序啟動時調用。
動態設置地圖初始范圍不難,直接用map.setExtentEnvelope envelope);方法就可以了。但是要獲取地圖范圍的那兩個點坐標,花了點我的時間,開始以為直接用map.getExtent()方法就Ok,但是仔細一看,這個方法返回一個polygon對象,而不是setExtent()方法里所需要的Envelope參數類型,一想,肯定需要轉換,但查官方API文檔,硬是沒有,時間都花這里了。后來看到一編文章,http://blog.csdn.net/wozaifeiyang0/article/details/7327729,這編文章給我我啟發,感謝這位兄台。是的,用map.getExtent().queryEnvelope(envelope);這個方法得到了我想要的結果。
代碼奉上
- Envelope rExtent=new Envelope();
- map.getExtent().queryEnvelope(rExtent);
- leftB_x=rExtent.getXMin();
- leftB_y=rExtent.getYMin();
- topR_x=rExtent.getXMax();
- topR_y=rExtent.getYMax();
這樣,是不是得到了那兩個點的坐標呢,原來很簡單,只是官方文檔不給力啊
