#leaflet
#листовка
Вопрос:
Я хочу создать экземпляр GeoJSON из запроса к базе данных с помощью PHP. Я использую этот пакет для создания экземпляра: http://jmikola.github.io/geojson/api/class-GeoJson .Функция.FeatureCollection.html
Я создал FeatureCollection, но я получаю сообщение об ошибке
«Ошибка: недопустимый объект LatLng: (неопределенный, неопределенный)», хотя мои координаты являются плавающими. Однако координаты поступают не через массив [,], а в виде объектов Javascript {,}, которые находятся внутри массива, и, возможно, в этом проблема? Во-вторых, я думаю, у меня возникли проблемы с настройкой CRS. Я могу успешно создать GeoJSON в QGIS, и он появляется в верхней части FeatureCollection, но с этим пакетом в PHP он появляется ближе к концу.
Моя коллекция функций выглядит следующим образом:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "MultiPoint",
"coordinates": [
{...},
{...}
]
},
"properties": [
{...},
{...}
],
"id": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
}
}
]
}
Я надеюсь, что кто-нибудь сможет помочь, потому что я часами просматривал форумы!
Приветствия
Ответ №1:
Да, координаты и свойства должны быть массивами, а не объектами. Поэтому вы можете преобразовать их, прежде чем пытаться создать свой GeoJSON, следующим образом:
//loop through all your features
featureCollection.features.forEach(function(feature) {
// first the coordinates in the geometry property
feature.geometry.coordinates.forEach(function(coord, index) {
feature.geometry.coordinates[index] = [coord.lat, coord.lng];
});
// then those in the properties
feature.properties.forEach(function(prop, index) {
feature.properties[index] = [prop.lat, prop.lng];
});
});
Комментарии:
1. Спасибо, добрый сэр!