十三.加速度傳感器

獲得加速度傳感器讀數:

1. UIAccelerometer *accelerometer = [UIAccelerometer shareAccelerometer]; // 單例 

2. accelerometer.delegate = self; 

3. accelerometer.updateInterval = 1.0f / 10.0f; // 傳感器更新頻率,普通遊戲10~30HZ,虛擬現實類遊戲,30~60HZ 

4. accelerometer.x, accelerometer.y, accelerometer.z // 傳感器讀數 

   若不想再接受傳感器讀數,可將代理設置爲nil

1. [UIAccelerometer shareAccelerometer].delegate = nil;  

2.  

3. #define alpha 0.05 

4. // 獲得重力引起的加速度讀數: 

5. - (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration 

6. 

7.     // 簡單低通濾波器 

8.     accelX = (acceleration.x * alpha) + (accelX) * (1.0 - alpha); 

9.     accelY = (acceleration.y * alpha) + (accelY) * (1.0 - alpha); 

10.    accelZ = (acceleration.z * alpha) + (accelZ) * (1.0 - alpha); 

11.

12.     

13.// 獲得動作引起的加速度讀數: 

14.- (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration 

15.

16.    // 減去低通濾波輸出,得到高通濾波輸出 

17.    accelX = acceleration.x - ((acceleration.x * alpha) + (accelX) * (1.0 - alpha)); 

18.    accelY = acceleration.y - ((acceleration.y * alpha) + (accelY) * (1.0 - alpha)); 

19.    accelZ = acceleration.z - ((acceleration.z * alpha) + (accelZ) * (1.0 - alpha)); 

20.

十六.地圖與連接服務器
[1] 添加框架MapKit.framework。使用MKMapView來呈現地圖。注意應當直接使用此類,而不是繼承之。如果希望在MKMapView類之上添加功能,可以使用MKMapViewDelegate協議。
    初始化:

1. MKMapView *mapView = [MKMapView alloc] initWithFrame: rect]; 

   初始化之後並不直接顯示,還需要指定顯示的地圖區域:

1. CLLocationCoordinate2D coordinate; 

2. coordinate.latitude = latitudeValue; // 緯度 

3. coordinate.longtitude = longtitudeValue; // 精度 

4. mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, width, height); // 指定顯示區域,widthheight單位都是米 

   之後可以通過addSubview添加地圖。
    屬性:showsUserLocation-爲YES,系統會持續跟蹤用戶的位置
          userLocationVisible-爲YES,將顯示用戶所在位置
    顯示地圖之後,常常希望在地圖上添加標註,這需要創建一個類,並實現MKAnnotation協議,這個類叫做標註對象。標註對象往往實現setCoordinate:方法來設置其座標。在地圖視圖上,可以設置標註對象的座標,然後添加進去,這樣地圖上就會出現一個標註。代理方法title 和subtitle能夠在標註上顯示標題和副標題。  

1. // 初始化 

2.    mapView = [MKMapView alloc] initWithFrame: CGRectMake(100, 100, 550, 700)]; 

3.    mapView.showsUserLocation = TRUE; 

4.    mapView.mapType = MKMapTypeStandard; 

5.    mapView.delegate = self; 

6.    // 設置座標 

7.    CLLocationCoordinate2D coordinate; 

8.    coordinate.latitude = 37.31; 

9.    coordinate.longtitude = -122.03; 

10.   mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 4000, 6000); // 4000米寬,6000米高的區域 

11.   [self.view insertSubview: mapView atIndex: 0]; 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章