4

我正在开发一个使用传单地图显示一些图层的角度应用程序,并且我正在尝试使用 GeoJSON,但我无法创建 L.geoJSON 图层。我正在尝试添加一个点,我发现的每一个资源都告诉我创建这个结构:

import { geoJSON } from 'leaflet';

geoJSON({
    type: "Point",
    coordinates: [lat,long]
});

但是当我提供应用程序时,我收到了这个错误:

Argument of type '{ type: "Point"; coordinates: number[]; }' is not assignable to parameter of type 'GeoJsonObject'.
Object literal may only specify known properties, and 'coordinates' does not exist in type 'GeoJsonObject'.

唯一的其他属性typebbox?.

我确定我做错了什么,但我真的不明白是什么。

使用

"leaflet": "^1.3.1"
"@types/leaflet": "^1.2.5"
"@asymmetrik/ngx-leaflet": "^3.0.2"
4

1 回答 1

5

Leaflet 的类型化定义指定geoJSON工厂接受GeoJSON 对象( spec ) 作为第一个参数。

您作为第一个参数传递的对象是Point类型Geometry Object ( spec ),它扩展了 GeoJSON 对象。因此,您应该简单地将您的对象明确声明为geojson.Point

import { geoJSON } from 'leaflet';
import * as geojson from 'geojson';

geoJSON(<geojson.Point>{
    type: "Point",
    coordinates: [lng, lat] // Note that in GeoJSON, order is [LONG, LAT]
});

JavaScript 中的 Leaflet 实际上接受更多类型作为L.geoJSON工厂的第一个参数:

于 2018-02-27T18:28:29.613 回答