gpt4 book ai didi

android - SKPOITrackerManager 没有正常工作

转载 作者:行者123 更新时间:2023-11-30 01:59:15 25 4
gpt4 key购买 nike

我正在使用 SKPOITrackerManager 在导航模式下跟踪自定义的可跟踪 POI。 SKTrackablePOI 对象的数组列表中有许多元素位于我的路线附近。但只有其中一个被 onReceivedPOIs() 跟踪。此方法仅返回一个单元素列表。但恰好一个 POI 会被调用 5 到 10 次。很抱歉,由于项目协议(protocol),我不能在这里发布我的完整代码。但在这里我可以向您展示我在 SKPOITrackerListener 接口(interface)的实现中的设置:

public void startPOITracking() {
poiTrackerManager = new SKPOITrackerManager(this);
SKTrackablePOIRule skTrackablePOIRule = new SKTrackablePOIRule();
skTrackablePOIRule.setAerialDistance(15000);
skTrackablePOIRule.setRouteDistance(15000);
skTrackablePOIRule.setNumberOfTurns(15000);
skTrackablePOIRule.setMaxGPSAccuracy(15000);
skTrackablePOIRule.setEliminateIfUTurn(false);
skTrackablePOIRule.setMinSpeedIgnoreDistanceAfterTurn(12000);
skTrackablePOIRule.setMaxDistanceAfterTurn(150000);
poiTrackerManager.startPOITrackerWithRadius(100, 0.5);
poiTrackerManager.setRuleForPOIType(SKTrackablePOIType.INVALID, skTrackablePOIRule);
poiTrackerManager.addWarningRulesforPoiType(SKTrackablePOIType.INVALID);
}

我在 SKTrackablePOIRule 中将限制设置为非常高的值,但仍然只能获取一个 POI。我什至可以用 poiTrackerManager.setRuleForPOIType(SKTrackablePOIType.INVALID, skTrackablePOIRule); 注释掉这一行,我仍然只收到一个 POI。也许有人可以帮助理解我的问题。

最佳答案

这是我过去用过的东西:

poiTrackingManager = new SKPOITrackerManager(this);
SKTrackablePOIRule rule = new SKTrackablePOIRule();
rule.setAerialDistance(5000); // this would be our main constraint, stating that all the POIs with 5000m, aerial distance should be detected
rule.setNumberOfTurns(100); // this has to be increased – otherwise some points will be disconsidered
rule.setRouteDistance(10000);//this has to be increased as the real road route will be longer than the aerial distance
rule.setMinSpeedIgnoreDistanceAfterTurn(20); //decrease this to evaluate all candidates
rule.setMaxDistanceAfterTurn(10000); //increase this to make sure we don't exclude any candidates
rule.setEliminateIfUTurn(false); // setting this to true (default) excludes points that require us to make an U-turn to get to them
rule.setPlayAudioWarning(false);

注意:我不确定这些参数的最大/最小值是多少,因为当它们过高时我看到了一些问题(它们确实会影响路由算法,更准确地说是如何探索了路线图,因此这可以解释为什么在高值时它可能会出现故障)-我会说你应该从保守值开始,然后逐渐增加它们

对于 startPOITrackerWithRadius,我会使用不同的值,就像将半径设置为 100(米)一样,这将大大减少 SDK 能够分析的 POI 数量(即使规则很好,也可能无法分析 POI)因为它们不落在您当前位置周围的“半径”(空中距离)内):

poiTrackingManager.startPOITrackerWithRadius(1500, 0.5);

另见 http://sdkblog.skobbler.com/detecting-tracking-pois-in-your-way/有关 POITraker 工作原理的更多见解

关于android - SKPOITrackerManager 没有正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31749059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com