如何在角度7中使用npm软件包('latlon-geohash')

时间:2019-07-18 15:08:58

标签: angular npm geolocation angular7 geohashing

我试图在Angular 7应用中使用latlon-geohash npm软件包,但是当我运行它时,出现此错误...

  

错误TypeError:latlon_geohash__WEBPACK_IMPORTED_MODULE_8 __。encode是   不是功能

这是我的代码:

import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import * as gh from 'latlon-geohash';

@Component({
  selector: 'app-account',
  templateUrl: './account.component.html',
  styleUrls: ['./account.component.scss'],
})
export class AccountComponent implements OnInit {

  constructor() {

  }

  ngOnInit() {
     //Here I'm trying to encode my lat and lng to a GeoHash
    console.log(gh.encode(39.36, -76.69, 4))
  }

}

它不起作用。但是,当我运行console.log(gh)时,我得到了...

Module {default: ƒ, __esModule: true, Symbol(Symbol.toStringTag): "Module"}
default: class Geohash
adjacent: ƒ adjacent(geohash, direction)
arguments: (...)
bounds: ƒ bounds(geohash)
caller: (...)
decode: ƒ decode(geohash)
encode: ƒ encode(lat, lon, precision) //HERE IS MY FUNCTION
length: 0
name: "Geohash"
neighbours: ƒ neighbours(geohash)
prototype: {constructor: ƒ}
__proto__: ƒ ()
[[FunctionLocation]]: latlon-geohash.js:11
[[Scopes]]: Scopes[3]
Symbol(Symbol.toStringTag): "Module"
__esModule: true
__proto__: Object

我在那里看到了我的encode函数。为什么不起作用?我似乎找不到答案,但是我觉得可能缺少一些非常简单的东西。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试以下两种方法以查看其是否有效

import Geohash from 'latlon-geohash';

const Geohash = require('latlon-geohash')

答案 1 :(得分:1)

您应将latlon-geohash添加到angular.json中的脚本中。必须在scripts的{​​{1}}内部提供任何第三方脚本/库。提供angular.json到角度项目的完整相对路径,以使其可供使用。

确保您也重建您的项目。

EX:

latlon-geohash.js

还要将导入内容添加到您的组件:"scripts": [ "./node_modules/path-to-lib/latlon-geohash.js", ,如Tony所述。

这是stackblitz link供您尝试