我无法找到一种方法来制作我的应用程序,目前正在实施SKmaps以显示路线,显示路线并像汽车导航仪一样遵循路线.
这是我的"路线加载"方法.希望我没有错过任何东西.
@Override
public void onAllRoutesCompleted() {
SKNavigationSettings navigationSettings = new SKNavigationSettings();
navigationSettings.setNavigationType(SKNavigationSettings.SKNavigationType.REAL);
navigationSettings.setNavigationMode(SKNavigationSettings.SKNavigationMode.CAR);
navigationSettings.setCcpAsCurrentPosition(true);
navigationSettings.setFcdEnabled(true);
SKNavigationManager navigationManager = SKNavigationManager.getInstance();
navigationManager.setMapView(mapView);
navigationManager.setNavigationListener(MainActivity.this);
navigationManager.startNavigation(navigationSettings);
}
Run Code Online (Sandbox Code Playgroud) 我们已经在我们的用户群中发现,自上次 google fit 应用程序更新以来,数据急剧下降,自开始以来,我们一直试图找出代码中的问题。给出时间,我们认为我们使用的版本(当时是 18.0)是问题所在。升级到 SDK 20.0 并没有改善结果,但阻止了数据停滞。目前我们可以假设 50-60% 通过 SDK 连接到 google fit 的用户不再根据(以前工作的)实现正确检索数据。它们并没有丢失,它们仍然在这里和那里发送一些比特,但它不再是以前的样子。
这张图表展示了事件的时间线,这些事件让我们得出结论,一方一定做错了什么。
为了便于阅读,下面的代码示例已经去除了大多数数据处理代码,但它仍然存在。
我们的 Fitness 客户端请求FitnessOptions.ACCESS_READ下面提到的所有类型,以及取决于应用程序的其他类型,每次初始化时,无论是在前台还是后台,确保我们只请求用户接受的那些。
我们可以确认下一个数据类型在请求每日总计或本地设备每日总计时不再返回任何值,但在非聚合读取中请求时确实返回同一时期的数据块:
DataType.TYPE_STEP_COUNT_DELTA
DataType.TYPE_CALORIES_EXPENDED
DataType.TYPE_HEART_RATE_BPM
Run Code Online (Sandbox Code Playgroud)
我们还尝试将那些可能的更改为它们的聚合对应项,但无济于事:
DataType.AGGREGATE_CALORIES_EXPENDED
DataType.AGGREGATE_STEP_COUNT_DELTA
Run Code Online (Sandbox Code Playgroud)
这是我们当前的 getDailyTotal 实现,在更新之前工作,并且直接写成开发人员站点上的示例显示:
DataType.TYPE_STEP_COUNT_DELTA
DataType.TYPE_CALORIES_EXPENDED
DataType.TYPE_HEART_RATE_BPM
Run Code Online (Sandbox Code Playgroud)
无论一天中的哪个时间被询问,这当前都返回 0。
然后我们有我们的补充代码,它模拟 getDailyTotal 在内部所做的事情,也根据开发人员站点示例:从:天开始于 00 : 00 : 00,UTC+1到:天结束于 23:59 : 59,UTC+ 1 类型:任何数据类型。
DataType.AGGREGATE_CALORIES_EXPENDED
DataType.AGGREGATE_STEP_COUNT_DELTA
Run Code Online (Sandbox Code Playgroud)
这里的常见结果是 1) 一个 null 或空结果,2) 实际得到结果(在DataType.TYPE_STEP_COUNT_DELTA 有时发生的情况下)或 3) APIExceptioncode 5012, this datatype can't be aggregated.
我们正在使用单聚合,因为双聚合(type, type.aggregate)已经被弃用,因为一些版本已经被弃用了,尽管一些开发者站点的例子仍然使用它。 …
在阅读了 Projection 的文档和一些尝试失败的测试后,我发现自己无法找到解决此问题的方法。
我发现的所有解决方案都与 x 和 y 坐标参考墨卡托地图投影这一事实有关,但在这种情况下,我将它们来自放置在地图图层上的本地图像。
假设我有一个 400px * 200px 的灰色图像,使用 ImageOverlay.Rotated 放置在传单地图上,位置如下:
var topleft = L.latLng(41.604766, 0.606402);
var topRight = L.latLng(41.605107, 0.606858);
var bottomleft = L.latLng(41.604610, 0.606613);
Run Code Online (Sandbox Code Playgroud)
此图像使用左上角、右上角和左下角坐标作为参考放置在地图上。
结果是一个稍微向北旋转的矩形。
如果我知道我将手机留在像素 100,50(原始图像的左角)处,我如何将这个笛卡尔坐标转换为我的地图的纬度和经度以显示它?
如果它是一个与北方完美对齐的矩形,我想我可以得到左上角和左下角之间的 º 差异,将其除以像素数,然后将结果与手机的 Y 相乘以获得纬度。使用先验值,我将它乘以我手机的 X 以获得我手机的经度。
但鉴于形状是旋转的,世界并不平坦,而且我在地理和三角学方面非常糟糕,我不确定它是否足够精确。
最后,我们说的是电话,而不是建筑物。几米外(2-4 米)是可以的,一个建筑街区之外就不行。
javascript leaflet typescript angular-leaflet-directive angular
android ×2
angular ×1
google-fit ×1
java ×1
javascript ×1
kotlin ×1
leaflet ×1
skmaps ×1
typescript ×1