无法手动创建正确的位置 - 它始终显示错误的位置。有人可以告诉我们如何做正确的事情,并在我的代码中显示我的错误值吗?感谢。
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];
答案 0 :(得分:4)
您设置积分和方向的方式看起来很不错。
唯一需要改变的是:
[locationBuilder addBeaconIdentifiedByMac:kBeaconMac1
atBoundarySegmentIndex:0
inDistance:0
fromSide:ESTLocationBuilderLeftSide];
此代码为:
我有一个信标,其中MAC地址
kBeaconMac1
位于第一面墙(atBoundarySegmentIndex:0
),距离墙左侧0米(inDistance:0
)fromSide:ESTLocationBuilderLeftSide
)。
"左"或"对"被理解为"我在房间的中间,直接面向墙壁;左边是我的左边,右边是我的右边"。
"第一堵墙"被理解为您在setLocationBoundaryPoints
中定义的前两点之间的墙。 "第二面墙"将在第二和第三点之间,"第三壁"在第三和第四之间,以及最后的第四墙" - 第四和第一墙。
看一下图片,你实际上是在墙的中间放置了你的灯塔,所以你希望inDistance
参数设置为theWidthOfTheWall / 2
,即在"第一面墙&#的情况下34;,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];