3

无法手动创建正确的位置 - 它总是显示错误的位置。有人能告诉我如何正确地做,并在我的代码中显示我的错误值吗?谢谢。

在此处输入图像描述

    ESTLocationBuilder *locationBuilder = [ESTLocationBuilder new];

    [locationBuilder setLocationBoundaryPoints:@[
                                                 [ESTPoint pointWithX:0 y:0],
                                                 [ESTPoint pointWithX:0 y:7.46],
                                                 [ESTPoint pointWithX:7.6 y:7.46],
                                                 [ESTPoint pointWithX:7.6 y:0]
                                                 ]];

    [locationBuilder setLocationOrientation:275];

    [locationBuilder addBeaconIdentifiedByMac:kBeaconMac1
                       atBoundarySegmentIndex:0
                                   inDistance:0
                                     fromSide:ESTLocationBuilderLeftSide];

    [locationBuilder addBeaconIdentifiedByMac:kBeaconMac2
                       atBoundarySegmentIndex:1
                                   inDistance:0
                                     fromSide:ESTLocationBuilderLeftSide];

    [locationBuilder addBeaconIdentifiedByMac:kBeaconMac3
                       atBoundarySegmentIndex:2
                                   inDistance:0
                                     fromSide:ESTLocationBuilderRightSide];

    [locationBuilder addBeaconIdentifiedByMac:kBeaconMac4
                       atBoundarySegmentIndex:3
                                   inDistance:0
                                     fromSide:ESTLocationBuilderRightSide];

    self.location = [locationBuilder build];
4

1 回答 1

4

您设置点和方向的方式看起来不错。

唯一需要改变的是:

[locationBuilder addBeaconIdentifiedByMac:kBeaconMac1
                       atBoundarySegmentIndex:0
                                   inDistance:0
                                     fromSide:ESTLocationBuilderLeftSide];

这段代码如下:

我有一个带有 MAC 地址的信标,位于距离墙壁左侧0 米 ( )kBeaconMac1的第一面墙 ( ) 上 ( )。atBoundarySegmentIndex:0inDistance:0fromSide:ESTLocationBuilderLeftSide

“左”或“右”被理解为“我在房间的中间,正对着墙壁;左边在我的左边,右边在我的右边”。

“第一面墙”被理解为您在 中定义的前两点之间的墙setLocationBoundaryPoints。“第二面墙”将在第二点和第三点之间,“第三面墙”在第三点和第四点之间,最后的“第四面墙”——第四面和第一面。

看图片,实际上您的信标位于墙的中间,因此您希望将inDistance参数设置为theWidthOfTheWall / 2,即在“第一面墙”的情况下,7.46 / 2 = 3.73。在这种特殊情况下,“左”或“右”无关紧要。

这是与图片匹配的代码:

[locationBuilder addBeaconIdentifiedByMac:kBeaconMac1
                   atBoundarySegmentIndex:0
                               inDistance:3.73
                                 fromSide:ESTLocationBuilderLeftSide];

[locationBuilder addBeaconIdentifiedByMac:kBeaconMac2
                   atBoundarySegmentIndex:1
                               inDistance:3.8
                                 fromSide:ESTLocationBuilderLeftSide];

[locationBuilder addBeaconIdentifiedByMac:kBeaconMac3
                   atBoundarySegmentIndex:2
                               inDistance:3.73
                                 fromSide:ESTLocationBuilderRightSide];

[locationBuilder addBeaconIdentifiedByMac:kBeaconMac4
                   atBoundarySegmentIndex:3
                               inDistance:3.8
                                 fromSide:ESTLocationBuilderRightSide];
于 2015-05-21T17:58:23.783 回答