2015-09-04 65 views
1

我正在編寫一個Swift應用程序,我使用SDK Skobbler來操縱一個地圖。 應用程序顯示圈:UIBezierPath - 什麼是單位半徑

func displayCircle(x: Int, y: Int, radius: Int){...} //display circle in the map 

此外,我檢查,如果用戶在此領域中:

for area in self.areas { 

      var c = UIBezierPath() 

      let lat = area.getLatitude() 
      let long = area.getLongitude() 
      let radius = area.getRadius()/1000 
      let center = CGPoint(x: lat, y: long) 

      c.addArcWithCenter(center, radius: CGFloat(radius), startAngle: CGFloat(0), endAngle: CGFloat(360), clockwise: true) 
      if c.containsPoint(CGPoint(x: currentLocation.latitude, y: currentLocation.longitude)) { 
       //I AM IN THE AREA 
      }else { 
       //I AM NOT IN THE AREA 
      } 
      c.closePath() 
     } 

當我在圈子裏,它的工作原理,但是,當我outsite的圈子裏也適用...

我認爲這個問題是關係到單位半徑

  • skobbler - >單位米
  • UIBezierPath - 單位?

謝謝您的幫助

Ysee

回答

1

不回答你的問題,但你應該使用CoreLocation功能對於任務:

let current = CLLocation(latitude: currentLocation.latitude, longitude: currentLocation.longitude) 
    for area in self.areas { 
     let center = CLLocation(latitude: CLLocationDegrees(area.getLatitude()), longitude: CLLocationDegrees(area.getLongitude())) 
     if current.distanceFromLocation(center) <= CLLocationDistance(area.getRadius()) { 
      //I AM IN THE AREA 
     } 
     else { 
      //I AM NOT IN THE AREA 
     } 
    } 
+0

好吧,我會試試這個代碼。謝謝 – Maybe1

1

iOS的單位是點。
在非視網膜設備中,1個點等於1個像素。 在視網膜設備(@ 2x)中,1點等於兩個像素。 在@ 3x設備(Iphone 6 plus)中,1點等於三個像素。

關心角度。單位是弧度不是度數。 所以你需要將你的度數轉換爲弧度,你的角度應該是2 * M_PI,這對應於360度。你可以定義一個擴展來進行轉換:

extension Int { 
     var degreesToRadians : CGFloat { 
      return CGFloat(self) * CGFloat(M_PI)/180.0 
     } 
    } 
    45.degreesToRadians // 0.785398163397448 
+0

謝謝你這個有用的信息! :) – Maybe1