首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试ng/地理定位在角度8中可观测到?

如何测试ng/地理定位在角度8中可观测到?
EN

Stack Overflow用户
提问于 2022-01-10 13:32:47
回答 1查看 173关注 0票数 0

我正在尝试测试一个简单的角8服务,该服务使用GeoLocation服务角的Web获取用户位置

代码语言:javascript
复制
 public enableGPS() {
    if (!this.locationSubscription)
        this.locationSubscription = this.geoLocationService.subscribe(
            (position) => {
                this._currentLocation = position.coords;
            }
        );
 }

这就是测试

代码语言:javascript
复制
 describe("Toggle Location Service", () => {

    it("should enable location service", () => {

        const testPosition = {
            position: {
                coords: {
                    longitude: 1.0,
                    latitude: 2.0
                }
            }};

        let geoLocationService: GeolocationService = TestBed.get(GeolocationService);
        spyOn(geoLocationService, 'subscribe').and.returnValue(
            Observable.of(testPosition));
        service.enableGPS();
        expect(service.currentLocation).toEqual(testPosition);
      });
    });

但是service.currentLocation总是未定义,并且订阅回调从不被调用。

EN

回答 1

Stack Overflow用户

发布于 2022-05-17 16:56:39

我不知道现在回答你的问题是否为时已晚,但我只是发现自己需要在我的项目中使用这个。

因为我不能让库工作,所以直接使用浏览器的资源。

https://developer.mozilla.org/en/docs/Web/API/Geolocation/getCurrentPosition

我创建了一个服务,如下所示:

代码语言:javascript
复制
import { Injectable } from '@angular/core';
@Injectable({
  providedIn: 'root'
})
export class LocationService{
    constructor(){
    }
    
    getPosition(): Promise<any> {
        return new Promise((resolve, reject) => {
            navigator.geolocation.getCurrentPosition(resp => {
                    resolve({lng: resp.coords.longitude, lat: resp.coords.latitude});
                },
                err => {
                    reject(err);
              });
        });
    }
}

然后我在我的组件中称之为:

代码语言:javascript
复制
import { LocationService } from '../Interfaces/Services/location.service';

  location : any = { latitude: '', longitude: '' };
  constructor(
    private _locationService: LocationService
  ) {

  }
  async getLocation() {
    this._locationService.getPosition().then(pos => {
        this.location= {
          latitude: pos.lat,
          longitude: pos.lng
        }
    });
  }

我希望它对你有帮助,如果没有,我希望未来的开发人员能清楚地找到答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70653242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档