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

Я разрабатываю приложение на angular, которое использует карту листовок для отображения некоторых слоев, и я пытаюсь использовать 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"

person Federico Xella    schedule 27.02.2018    source источник


Ответы (1)


Типизированное определение для Leaflet указывает, что принимает 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:

person ghybs    schedule 27.02.2018
comment
Спасибо! Это не совсем интуитивно понятно .. Так что, если я хочу добавить функцию, скажем LineString, мне нужно сделать следующее: geoJSON(<geojson.Feature<geojson.LineString>>{ type: "Feature", geometry: { type: "LineString", "coordinates": [ [ 44.4992192, 11.3616455 ], [ 44.4992192, 13.3616455 ] ] } }) Верно? - person Federico Xella; 28.02.2018
comment
Хум выглядит странно, но эй, просто попробуй. Я бы сначала поставил <geojson.Feature>, затем <geojson.LineString> для объекта geometry. Если вам нужна помощь в этом, удобнее было бы открыть новый вопрос, в комментариях сложно показывать что-то. - person ghybs; 28.02.2018
comment
Да, заметил: D Последний вопрос: если мне нужно стилизовать свой geoJSON, как я могу это сделать? (Если это будет слишком долго, я открою новый вопрос) - person Federico Xella; 28.02.2018
comment
Ознакомьтесь с документацией Leaflet, в ней объясняются заводские параметры L.geoJSON, включая стиль. У вас также должно быть много ресурсов по этому поводу здесь, на SO. Если вам все еще нужна помощь, не стесняйтесь задавать новый вопрос. - person ghybs; 28.02.2018