我对 JavaScript、Node 等仍然有些陌生,并且来自 Groovy 背景(其语法与 JavaScript 极其相似)。在 Groovy 中,我可以轻松地执行以下操作:
def myMap1 = {};
def myMap2 = {};
myMap1["key1"] = "value1";
myMap1["key2"] = "value2";
myMap1["key3"] = "value3";
myMap1.each() { key, value =>
myMap2[key] = value;
}
Run Code Online (Sandbox Code Playgroud)
这将遍历现有映射 (myMap1) 并将每个键的值复制到新映射 (myMap2),并使用相同的键名。非常简单。然而,JS 有一个原型的概念,这让我很抓狂,因为你必须使用 hasOwnProperty、项目的索引等,这导致了大量代码用于一些本来应该非常简单的事情。
查看 Object() 的 MDN 文档,看起来 JS 已经实现了一些东西,允许开发人员访问键/值对,而无需处理原型设计和所有这些东西,您只需访问对象中的数据,而不是对象的属性。我现在有这个:
def myMap1 = {};
def myMap2 = {};
myMap1["key1"] = "value1";
myMap1["key2"] = "value2";
myMap1["key3"] = "value3";
myMap1.each() { key, value =>
myMap2[key] = value;
}
Run Code Online (Sandbox Code Playgroud)
我认为这会起作用,但我在控制台中得到了这个:
Old value is undefined
Setting …Run Code Online (Sandbox Code Playgroud) 我在 Angular 6 中构建了一个 PWA,并打算将 Google Maps API 用于地理定位。然而,我很快意识到 PWA 中的地理定位服务仅在用户与 UI 交互以故意请求他们的位置时才起作用。然而,我的应用程序应该在用户开车时在后台跟踪他们的位置。因此,当他们锁定屏幕或转到其他应用程序时,它仍应跟踪他们。作为记录,这是一个私人应用程序,用户完全知道他们正在被跟踪。因此,我使用 Cordova 将 PWA 转换为混合应用程序。到目前为止,一切都与我已经拥有的一样(模拟很好,等等),但我似乎无法弄清楚如何添加地理定位部分。我已经安装了这个插件,它似乎已安装并可用。我见过的所有示例都使用 Ionic(此时我不需要它)并且适用于用户单击按钮以获取其位置的场景,但我需要它在地理定位内容位于服务中并开始的地方他们登录后在后台运行。我似乎无法找到显示如何执行此操作的内容。这是我认为我应该做的:
(这并不完整,我只是在此处粘贴了来自 GitHub 的示例代码,并打算在我知道它实际上被调用时用“东西”填充它)
_services/geolocation.service.ts:
import { Injectable } from '@angular/core';
import { Component, ViewChild } from '@angular/core';
declare var cordova: any;
@Injectable()
export class GeolocationService {
startBackgroundGeolocation() {
console.log("Geolocation service called...");
cordova.plugins.BackgroundGeolocation.configure({
locationProvider: cordova.plugins.BackgroundGeolocation.ACTIVITY_PROVIDER,
desiredAccuracy: cordova.plugins.BackgroundGeolocation.HIGH_ACCURACY,
stationaryRadius: 50,
distanceFilter: 50,
notificationTitle: 'Background tracking',
notificationText: 'enabled',
debug: true,
interval: 10000,
fastestInterval: 5000,
activitiesInterval: 10000,
url: 'http://192.168.0.3:3000/location',
httpHeaders: {
'X-FOO': 'bar'
}, …Run Code Online (Sandbox Code Playgroud)