2017-07-27 28 views
0

嗨,伙计们,室内地图 - 如何使用iBeacons手动设置跟踪用户的位置和方向?

我正在创建一个演示项目来跟踪用户在室内区域的位置并使用Estimote Proximity Beacons显示实时跟踪。和SDK使用Estimote室内位置sdk。但我被困在一点。

SDK委托函数总是发送响应错误,并且错误是: 无法确定位置

在这里,我代表我的代码和功能以我在我的演示使用,所以请任何一个有想法突出位置在此请建议我在哪个点我可以犯错,所以我会解决并实施正确的解决方案。请给我建议,并在此先感谢...

let beaconManager = ESTBeaconManager() 
let locationManager = EILIndoorLocationManager() 
var location = EILLocation() 
let locationBuilder = EILLocationBuilder() 
var positionView = EILPositionView() 
var position = EILOrientedPoint() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.beaconManager.delegate = self 
    self.beaconManager.requestAlwaysAuthorization() 

    // TODO: put your App ID and App Token here 

    ESTConfig.setupAppID("Id i am use Registed Estimote Id", andAppToken: "Token also use provided by register app on Estimote") 
    ESTConfig.isAuthorized() 

    locationBuilder.setLocationName("DCX Retail Store") 
    locationBuilder.setLocationBoundaryPoints([ 
     EILPoint(x: 0.00, y: 0.00), 
     EILPoint(x: 0.00, y: 1.00), 
     EILPoint(x: 1.00, y: 1.00), 
     EILPoint(x: 1.00, y: 0.00)]) 

    locationBuilder.addBeacon(withIdentifier: "B9407F30-F5F8-466E-AFF9-255556B57FE6D", withPosition:EILOrientedPoint.init(x: 0.00, y: 0.00), andColor: ESTColor.blueberryPie) 
    locationBuilder.addBeacon(withIdentifier: "B9407F30-F5F8-466E-AFF9-255556B57FE6D", withPosition:EILOrientedPoint.init(x: 0.00, y: 1.00), andColor: ESTColor.mintCocktail) 
    locationBuilder.addBeacon(withIdentifier: "B9407F30-F5F8-466E-AFF9-255556B57FE6D", withPosition:EILOrientedPoint.init(x: 1.00, y: 1.00), andColor: ESTColor.icyMarshmallow) 
    locationBuilder.addBeacon(withIdentifier: "B9407F30-F5F8-466E-AFF9-255556B57FE6D", withPosition:EILOrientedPoint.init(x: 1.00, y: 0.00), andColor: ESTColor.blueberryPie) 

    // Add door in Indoor area... 

    locationBuilder.addDoors(withLength: 0.3, atBoundarySegmentIndex: 0, inDistance: 0.7, from: .rightSide) 

    locationBuilder.setLocationOrientation(0) 

    //set up location... 
    self.location.randomPointInside() 
    location = locationBuilder.build()! 

    // Set the location manager's delegate 

    self.locationManager.delegate = self 
    self.locationManager.start() 
    self.locationManager.state(for: self.location) 
    self.locationManager.mode = EILIndoorLocationManagerMode.light 

    self.locationView.showTrace = true 
    self.locationView.showWallLengthLabels = true 
    self.locationView.rotateOnPositionUpdate = true 

    self.locationView.locationBorderColor = UIColor.black 
    self.locationView.locationBorderThickness = 2 

    self.locationView.doorColor = UIColor.green 
    self.locationView.doorThickness = 2 
    self.locationView.traceColor = UIColor.yellow 
    self.locationView.traceThickness = 2 

    self.locationView.wallLengthLabelsColor = UIColor.blue 

    //Start Location Drawing.. 
    self.locationView.drawLocation(self.location) 
    self.locationManager.startPositionUpdates(for: self.location) 

} 

// EILIndoorLocationManager委托方法..

func indoorLocationManager(_ manager: EILIndoorLocationManager, didFailToUpdatePositionWithError error: Error) { 
    print("failed to update position: \(error)") 
} 

func indoorLocationManager(_ manager: EILIndoorLocationManager, didUpdatePosition position: EILOrientedPoint, with positionAccuracy: EILPositionAccuracy, in location: EILLocation) { 
    var accuracy: String! 
    switch positionAccuracy { 
     case .veryHigh: accuracy = "+/- 1.00m" 
     case .high:  accuracy = "+/- 1.62m" 
     case .medium: accuracy = "+/- 2.62m" 
     case .low:  accuracy = "+/- 4.24m" 
     case .veryLow: accuracy = "+/- ? :-(" 
     case .unknown: accuracy = "unknown" 
    } 
    print(String(format: "x: %5.2f, y: %5.2f, orientation: %3.0f, accuracy: %@", position.x, position.y, position.orientation, accuracy)) 

    self.locationManager.startPositionUpdates(for: self.location) 
    self.locationView.updatePosition(position) 
    lblCoordinate.text = "X:\(position.x),Y:\(position.y),accuracy:\(accuracy)" 

} 

谢谢你, 家伙。

+0

你确定你必须从室内绘制准确的室内位置点吗?因为我已经在我的应用中使用了estimote室内位置sdk,并且它的作品很棒。 –

+0

您是否可以使用estimote室内位置应用程序设置您的位置?并将您的位置点存储在estimote云中? –

+0

是的,我必须将我的办公室室内位置存放在室内的位置。 –

回答

0

你的代码看起来没问题,只是试着重新检查你的室内位置点。 您使用室内位置应用程序设置您的位置。尝试从Estimote Cloud下载信标位置(如果可能),并在您的应用程序中手动设置相同的值。