Невозможно создать слой GeoJSON

Я разрабатываю приложение под углом, которое использует карту листовки, чтобы показать некоторые слои, и я пытаюсь использовать 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'.

Единственное другое свойство за пределами type является bbox?,

Я уверен, что делаю что-то не так, но я не могу понять, что.

С помощью

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

1 ответ

Решение

Типизированное определение для брошюры указывает, что geoJSON Фабрика принимает GeoJSON Object ( spec) в качестве 1-го параметра.

Объект, который вы передаете в качестве первого параметра, является 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 на самом деле принимает больше типов в качестве 1-го параметра L.geoJSON завод:

Другие вопросы по тегам