Skip to content
Snippets Groups Projects
Commit f4b61846 authored by digrazia2038's avatar digrazia2038 Committed by Benguria Elguezabal, Gorka
Browse files

almost fixed map

parent a18f2e34
No related branches found
No related tags found
No related merge requests found
......@@ -29,10 +29,4 @@ export class DatastorageService {
getMessinaCycling(): Observable<any> {
return this.http.get<any>('https://messina.urbanite.esilab.org/data/getTData/gtfsShape/messina?filters=%7B%20%22alternateName%22%3A%22CyclingPaths%22%7D');
}
getDataFromAmsterdam(): Observable<Array<DataStorageLayer>> {
return this.http.get<any>('https://amsterdam.urbanite.esilab.org/data/getTData/mapLayer/amsterdam');
}
}
......@@ -19,14 +19,11 @@
</nb-card-header>
<nb-card-body>
<mat-selection-list (selectionChange)="onChange($event)">
<mat-list-item *ngFor="let layer of layersByPilot[pilot]">
<button (click)="invokeModal($event, layer)" nbButton>
<nb-icon icon="info" nbTooltip="Click for infos"></nb-icon>
</button>
<mat-list-option [value]="layer">
&nbsp;{{layer}}
<mat-list-option *ngFor="let layer of layersByPilot[pilot]" [value]="layer">
<p>
<nb-icon icon="info" [nbTooltip]="layersByPilot[pilot]"></nb-icon>&nbsp;{{layer}}
</p>
</mat-list-option>
</mat-list-item>
</mat-selection-list>
</nb-card-body>
<nb-card-footer>
......
......@@ -9,10 +9,6 @@ import Messina_cycling_path from '../../../../assets/map/map-component-maps/mess
import Messina_ATM_Stops from '../../../../assets/map/map-component-maps/atmStops.json';
import Messina_Cameras from '../../../../assets/map/map-component-maps/cameras.json';
import Messina_POIs from '../../../../assets/map/map-component-maps/messina_pois.json';
import Messina_Incidenti_2018 from '../../../../assets/map/map-component-maps/incidenti_messina/street_result_2018.json';
import Messina_Incidenti_2019 from '../../../../assets/map/map-component-maps/incidenti_messina/street_result_2019.json';
import Messina_Incidenti_2020 from '../../../../assets/map/map-component-maps/incidenti_messina/street_result_2020.json';
import Messina_district from '../../../../assets/map/map-component-maps/out_district_messina.json';
import Bilbao_air_quality from '../../../../assets/map/map-component-maps/bilbao_air_quality_request.json';
import Bilbao_bike from '../../../../assets/map/map-component-maps/bilbao_bike_request.json';
import Bilbao_sound from '../../../../assets/map/map-component-maps/bilbao_sound_request.json';
......@@ -50,20 +46,10 @@ export interface FeatureProperties {
templateUrl: './map.component.html',
})
export class MapComponent implements OnInit {
constructor(
public dialogService: NbDialogService,
private dashboardPageService: DashboardPageCrudService,
private configService: ConfigService,
private dataStorageService: DatastorageService,
private translateService: TranslateService,
private messinaClientService: MessinaClientService,
private modalService: NbDialogService) {
this.fillGeojesonlayer();
constructor(public dialogService: NbDialogService, private dashboardPageService: DashboardPageCrudService,
private configService: ConfigService, private dataStorageService: DatastorageService, private translateService: TranslateService, private messinaClientService: MessinaClientService,) {
}
public map: L.Map;
public legend = new (L.Control.extend({
legend = new (L.Control.extend({
options: { position: 'bottomright' }
}));
......@@ -85,12 +71,11 @@ export class MapComponent implements OnInit {
pilot: string;
layersByPilot: { [key: string]: string[] } = {
MESSINA: ["Point of Interests", "ATM Stops", "Messina - Dinnamare", "Messina - Centro", "Messina - Litoranea", "Cameras",
"Messina Incidenti 2018", "Messina Incidenti 2019", "Messina Incidenti 2020"],
BILBAO: [],
AMSTERDAM: [],
HELSINKI: ["Helsinki Bike Stations", "Helsinki Terminalit", "Helsinki Cyclist"],
URBANITE: ["Bilbao Air Quality", "Bilbao Sound", "Point of Interests", "ATM Stops", "Messina - Dinnamare", "Messina - Centro", "Messina - Litoranea", "Cameras"],
MESSINA: ["Point of Interests", "ATM Stops", "Messina - Dinnamare", "Messina - Centro", "Messina - Litoranea", "Cameras"],
BILBAO: ["Bilbao Air Quality", "Bilbao Bike", "Bilbao Sound", "Bilbao Wifi"],
AMSTERDAM: ["Amsterdam Bike"],
HELSINKI: [],
URBANITE: ["Amsterdam Bike", "Bilbao Air Quality", "Bilbao Bike", "Bilbao Sound", "Bilbao Wifi", "Point of Interests", "ATM Stops", "Messina - Dinnamare", "Messina - Centro", "Messina - Litoranea", "Cameras"],
}
coordinatesByPilot: { [key: string]: L.LatLngExpression } = {
......@@ -98,116 +83,27 @@ export class MapComponent implements OnInit {
BILBAO: [43.2627100, -2.9252800],
AMSTERDAM: [52.3740300, 4.8896900],
HELSINKI: [60.1695200, 24.9354500],
URBANITE: [60.1695200, 24.9354500],
}
geojsonLayerContent: { [key: string]: L.GeoJSON } = {
"Point of Interests": <L.GeoJSON>this.getLayer("Point of Interests", <any>Messina_POIs['results']['features']),
"Point of interests": <L.GeoJSON>this.getLayer("Point of interests", <any>Messina_POIs['results']['features']),
"ATM Stops": <L.GeoJSON>this.getLayer("ATM Stops", <any>Messina_ATM_Stops['results']['features']),
"Cameras": <L.GeoJSON>this.getLayer("Cameras", <any>Messina_Cameras['results']['features']),
//"Messina - Dinnamare": <any>this.messinaClientService.getCyclingPaths(), FUTURE IMPLEMENTATION
"Messina - Dinnamare": <L.GeoJSON>this.getLayer("Messina - Dinnamare", <any>Messina_cycling_path[0].location),
"Messina - Centro": <L.GeoJSON>this.getLayer("Messina - Centro", <any>Messina_cycling_path[1].location),
"Messina - Litoranea": <L.GeoJSON>this.getLayer("Messina - Litoranea", <any>Messina_cycling_path[2].location),
"Messina Incidenti 2018": <L.GeoJSON>this.getLayer("Messina Incidenti 2018", <any>Messina_Incidenti_2018['features']),
"Messina Incidenti 2019": <L.GeoJSON>this.getLayer("Messina Incidenti 2019", <any>Messina_Incidenti_2019['features']),
"Messina Incidenti 2020": <L.GeoJSON>this.getLayer("Messina Incidenti 2020", <any>Messina_Incidenti_2020['features']),
"Helsinki Bike Stations": <L.GeoJSON>this.getLayer("Helsinki Bike Stations", <any>Helsinki_Bike[0].map),
"Helsinki Terminalit": <L.GeoJSON>this.getLayer("Helsinki Bike Stations", <any>Helsinki_Terminalit[0].map),
"Helsinki Cyclist": <L.GeoJSON>this.getLayer("Helsinki Bike Stations", <any>Helsinki_Cyclist[0].map),
};
fillGeojesonlayer() {
let arrays: Array<DataStorageLayer> = <any>Amsterdam_bike;
//console.log(arrays);
arrays.forEach(layer => {
//console.log(layer);
this.geojsonLayerContent[layer.name] = <L.GeoJSON>this.getLayer(layer.name, layer.map);
// console.log(layer.name);
this.layersByPilot['AMSTERDAM'] = this.layersByPilot['AMSTERDAM'].concat(layer.name);
});
this.geojsonLayerContent["Messina Districts"] = <L.GeoJSON>this.getLayer("Messina Districts", <any>Messina_district);
this.layersByPilot['MESSINA'] = this.layersByPilot['MESSINA'].concat("Messina Districts");
let level: DataStorageLayer;
let arrayBilbao: Array<DataStorageLayer> = <any>Bilbao_layers;
//console.log(arrayBilbao);
arrayBilbao.forEach(layer => {
//console.log(layer);
this.geojsonLayerContent[layer.name] = <L.GeoJSON>this.getLayer(layer.name, layer.map);
// console.log(layer.name);
this.layersByPilot['BILBAO'] = this.layersByPilot['BILBAO'].concat(layer.name);
});
// arrayBilbao.forEach(layer => {
// //console.log(layer.map['features']);
// level = layer.map['features'];
// console.log(level);
// this.geojsonLayerContent[""] = <L.GeoJSON>this.getLayer(layer.name, layer.map);
// <L.GeoJSON>this.getLayer("", layer.map);
// console.log(layer.name);
// this.layersByPilot['BILBAO'] = this.layersByPilot['BILBAO'].concat(layer.name);
// });
// arrays = <any>Bilbao_wifi;
// console.log(arrays);
// arrays.forEach(layer => {
// //console.log(layer.map['features']);
// //console.log(layer);
// // level = layer.map['features'];
// // console.log(level);
// this.geojsonLayerContent[""] = <L.GeoJSON>this.getLayer(layer.name, layer.map);
// <L.GeoJSON>this.getLayer("", layer.map);
// console.log(layer.name);
// this.layersByPilot['BILBAO'] = this.layersByPilot['BILBAO'].concat(layer.name);
// });
arrays = <any>Helsinki_layers;
console.log(arrays);
arrays.forEach(layer => {
//console.log(layer);
this.geojsonLayerContent[layer.name] = <L.GeoJSON>this.getLayer(layer.name, layer.map);
// console.log(layer.name);
this.layersByPilot['HELSINKI'] = this.layersByPilot['HELSINKI'].concat(layer.name);
});
this.layersByPilot['URBANITE'] = this.layersByPilot['AMSTERDAM'].concat(this.layersByPilot['BILBAO']).concat(this.layersByPilot['HELSINKI']).concat(this.layersByPilot['MESSINA']);
}
layerDescription: { [key: string]: string } = {
"Point of Interests": "Point of interests of Messina",
"ATM Stops": "ATM Stops of Messina",
"Cameras": "Cameras of Messina",
"Messina - Dinnamare": Messina_cycling_path[0].description,
"Messina - Centro": Messina_cycling_path[1].description,
"Messina - Litoranea": "Pista ciclabile Messina - Litoranea",
"Messina Incidenti 2018": "Summary of road incidents in 2020\r\n Yellow: road incidents with injured\nOrange: road incidents with less than 3 deaths\nRed: road incidents with more than 3 deaths",
"Messina Incidenti 2019": "Summary of road incidents in 2019\r\n Yellow: road incidents with injured\nOrange: road incidents with less than 3 deaths\nRed: road incidents with more than 3 deaths",
"Messina Incidenti 2020": "Summary of road incidents in 2020\r\n Yellow: road incidents with injured\nOrange: road incidents with less than 3 deaths\nRed: road incidents with more than 3 deaths",
"Messina Districts": "Population of Messina divided by district. In this layer you can see some informations related to the population residents, building, housing, families, genders (females, males), ages (under 20 F/M, adults F/M and over 65 F/M) divided by districts of Messina City.",
"District II": "Population of Messina divided by district",
"District III": "Population of Messina divided by district",
"District IV": "Population of Messina divided by district",
"District V": "Population of Messina divided by district",
"District VI": "Population of Messina divided by district",
"Bilbao Air Quality": Bilbao_air_quality[0].description,
"Bilbao Bike": Bilbao_bike[0].description,
"Bilbao Wifi": Bilbao_wifi[0].description,
"Amsterdam Bike": Amsterdam_bike[0].description,
"Bilbao Air Quality": <L.GeoJSON>this.getLayer("Bilbao Air Quality", <any>Bilbao_air_quality[0].map),
"Bilbao Bike": <L.GeoJSON>this.getLayer("Bilbao Bike", <any>Bilbao_bike[0].map),
"Bilbao Wifi": <L.GeoJSON>this.getLayer("Bilbao Wifi", <any>Bilbao_wifi[0].map),
"Amsterdam Bike": <L.GeoJSON>this.getLayer("Amsterdam Bike", <any>Amsterdam_bike[0].map),
};
heatlayerLayerContent: { [key: string]: L.HeatLayer } = {
"Bilbao Sound": <L.HeatLayer>L.heatLayer(this.heatLayerConverter(<any>Bilbao_sound[0].map), this.heatOptions),
};
public map: L.Map;
ngOnInit(): void {
this.pilot = this.configService.getSettings("default_pilot");
......@@ -218,41 +114,23 @@ export class MapComponent implements OnInit {
let geojsonLayer = <L.GeoJSON>this.geojsonLayerContent[clickedLayerName];
let heatLayer = <L.HeatLayer>this.heatlayerLayerContent[clickedLayerName];
if (event.option.selected === true) {
//console.log("CHARGE LAYER-> " + clickedLayerName)
console.log("CHARGE LAYER-> " + clickedLayerName)
if (clickedLayerName !== "Bilbao Sound") {
this.map.addLayer(geojsonLayer);
//pointToLayer icon
geojsonLayer.eachLayer((layer: L.Layer) => {
if (layer instanceof L.Marker) {
layer.setIcon(L.icon({
iconUrl: 'assets/img/markers/marker-icon.png',
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
shadowSize: [41, 41]
}));
}
});
this.map.fitBounds(geojsonLayer.getBounds(), {
padding: [50, 50]
});
} else {
this.map.addLayer(heatLayer);
this.map.addControl(this.legend);
//console.log("CHARGE HEAT LAYER-> " + clickedLayerName);
}
}
else {
//console.log("DECHARGE LAYER-> " + clickedLayerName)
console.log("DECHARGE LAYER-> " + clickedLayerName)
if (clickedLayerName !== "Bilbao Sound") {
this.map = this.map.removeLayer(geojsonLayer);
} else {
this.map = this.map.removeLayer(heatLayer);
this.map.removeControl(this.legend);
}
}
......@@ -292,19 +170,22 @@ export class MapComponent implements OnInit {
};
}
icon = new L.Icon({
iconSize: [25, 41],
iconAnchor: [13, 41],
iconUrl: 'assets/img/markers/marker-icon.png',
iconRetinaUrl: 'assets/img/markers/marker-icon-2x.png',
shadowUrl: 'assets/img/markers/marker-shadow.png'
});
public getLayer(title: string, l) {
let layer = L.geoJSON(l, {
public getLayer(title, l): L.GeoJSON {
let layer = L.geoJSON(l,
{
onEachFeature: (feature, layer) => {
console.log(feature)
layer.bindPopup(this.getPopupContent(title, feature))
let text = "";
for (let p in feature.properties) {
text += `${p}: ${feature.properties[p]}\n`;
}
layer.bindPopup(text);
},
style: function () {
if (title == '2020')
return { color: '#248175', weight: 7, opacity: 0.8 }
else
return { color: "#880808", weight: 5, opacity: 0.8 }
}
},
style: (feature) => {
let style={
......@@ -352,25 +233,6 @@ export class MapComponent implements OnInit {
return layer;
}
public getPopupContent(title: string, feature) {
let content = "<h3>" + title + "</h3>";
if (feature.properties) {
for (var p in feature.properties) {
content += "<p>" + p + ": " + feature.properties[p] + "</p>";
}
}
// if (feature.coordinates) {
// content += "<p>Coordinates: " + feature.coordinates + "</p>";
// }
return content;
}
getLegendColor(v: number) {
switch(v) {
case 1:
......@@ -467,16 +329,6 @@ export class MapComponent implements OnInit {
console.log("R is");
console.log(feature);
}
}
public invokeModal(event, layer: string) {
console.log(event);
const dialogRef = this.dialogService.open(MapModalComponent, {
context: {
layer: layer,
description: this.layerDescription[layer],
},
});
}
}
\ No newline at end of file
This diff is collapsed.
[
{
"id": "urn:ngsi-ld:GtfsShape:messina:CyclingPaths:CRS84:1",
"alternateName": "CyclingPaths",
"description": "Pista ciclabile Messina - Dinnamare",
"location": {
"coordinates": [
[15.5612754821777, 38.2057461528513],
[15.5396461486816, 38.2137042649229],
[15.5279731750488, 38.2217626526206],
[15.5256128311157, 38.2283031144339],
[15.5229520797729, 38.2282019777484],
[15.5219650268555, 38.2273928792016],
[15.5218362808228, 38.2263140671392],
[15.5210638046265, 38.2264152064497],
[15.5202054977417, 38.2273254539165],
[15.5213642120361, 38.2298538593357],
[15.5227375030518, 38.2319439414548],
[15.5241537094116, 38.2345058956597],
[15.5190896987915, 38.229449320375],
[15.5154848098755, 38.2247969606063],
[15.5132102966309, 38.2201780192588],
[15.5113220214844, 38.217716711774],
[15.5091762542725, 38.218289900406],
[15.5061721801758, 38.2153227575021],
[15.5024814605713, 38.2124566523255],
[15.5002498626709, 38.2096241551407],
[15.49720287323, 38.2074322661897],
[15.4951858520508, 38.2059484885141],
[15.4920101165771, 38.1995746449794],
[15.4849290847778, 38.1928629579669],
[15.4799938201904, 38.1879046813689],
[15.4727840423584, 38.1738375293672],
[15.4648876190186, 38.1668198052653],
[15.4643297195435, 38.1587890805601]
],
"type": "LineString"
},
"name": "Messina - Dinnamare",
"type": "GtfsShape",
"@context": [
"https://smartdatamodels.org/context.jsonld",
"https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
],
"dateCreated": "2022-10-14T09:39:09.016Z",
"dateModified": "2022-10-14T09:39:09.016Z"
},
{
"id": "urn:ngsi-ld:GtfsShape:messina:CyclingPaths:CRS84:2",
"alternateName": "CyclingPaths",
"description": "Pista ciclabile Messina - Centro",
"location": {
"coordinates": [
[15.556404590607, 38.197247547181],
[15.55163025856, 38.189414124437],
[15.552043318749, 38.189178012077],
[15.552424192429, 38.188967197626],
[15.552581101656, 38.189100010947],
[15.552727282047, 38.188996711505],
[15.552932471037, 38.188906060766],
[15.553153753281, 38.188773246963],
[15.553459525108, 38.188596161463],
[15.55367410183, 38.188478104766],
[15.555133223534, 38.19032059499],
[15.556321442127, 38.191861615525],
[15.556497126818, 38.19204186355],
[15.556568875909, 38.192110906863],
[15.556604750454, 38.192143320436],
[15.556640625, 38.192142005046],
[15.557144880295, 38.19711264068],
[15.556860566139, 38.197175878031],
[15.556436777115, 38.197289705411],
[15.556404590607, 38.197247547181]
],
"type": "LineString"
},
"name": "Messina - Centro",
"type": "GtfsShape",
"@context": [
"https://smartdatamodels.org/context.jsonld",
"https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
],
"dateCreated": "2022-10-14T09:39:09.024Z",
"dateModified": "2022-10-14T09:39:09.024Z"
},
{
"id": "urn:ngsi-ld:GtfsShape:messina:CyclingPaths:CRS84:3",
"alternateName": "CyclingPaths",
"location": {
"coordinates": [
[15.565814, 38.218324],
[15.5655241012573, 38.2208523355462],
[15.5656099319458, 38.2223020944011],
[15.5667686462402, 38.2248306744285],
[15.5687856674194, 38.226920900893],
[15.56960105896, 38.2284379631292],
[15.5700302124023, 38.2298201478416],
[15.5710601806641, 38.2329552499491],
[15.5720043182373, 38.2344721863219],
[15.5731201171875, 38.2355171685269],
[15.5760169029236, 38.2369497810148],
[15.5778193473816, 38.2380115814698],
[15.5783772468567, 38.2375059641392],
[15.5791068077087, 38.2379441660288]
],
"type": "LineString"
},
"name": "Messina - Litoranea",
"type": "GtfsShape",
"@context": [
"https://smartdatamodels.org/context.jsonld",
"https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
],
"dateCreated": "2022-10-14T09:39:09.028Z",
"dateModified": "2022-10-14T09:39:09.028Z"
}
]
[{"id":"urn:ngsi-ld:GtfsShape:messina:CyclingPaths:CRS84:1","alternateName":"CyclingPaths","description":"Pista ciclabile Messina - Dinnamare","location":{"coordinates":[[15.5612754821777,38.2057461528513],[15.5396461486816,38.2137042649229],[15.5279731750488,38.2217626526206],[15.5256128311157,38.2283031144339],[15.5229520797729,38.2282019777484],[15.5219650268555,38.2273928792016],[15.5218362808228,38.2263140671392],[15.5210638046265,38.2264152064497],[15.5202054977417,38.2273254539165],[15.5213642120361,38.2298538593357],[15.5227375030518,38.2319439414548],[15.5241537094116,38.2345058956597],[15.5190896987915,38.229449320375],[15.5154848098755,38.2247969606063],[15.5132102966309,38.2201780192588],[15.5113220214844,38.217716711774],[15.5091762542725,38.218289900406],[15.5061721801758,38.2153227575021],[15.5024814605713,38.2124566523255],[15.5002498626709,38.2096241551407],[15.49720287323,38.2074322661897],[15.4951858520508,38.2059484885141],[15.4920101165771,38.1995746449794],[15.4849290847778,38.1928629579669],[15.4799938201904,38.1879046813689],[15.4727840423584,38.1738375293672],[15.4648876190186,38.1668198052653],[15.4643297195435,38.1587890805601]],"type":"LineString"},"name":"Messina - Dinnamare","type":"GtfsShape","@context":["https:\/\/smartdatamodels.org\/context.jsonld","https:\/\/uri.etsi.org\/ngsi-ld\/v1\/ngsi-ld-core-context.jsonld"],"dateCreated":"2022-10-14T09:39:09.016Z","dateModified":"2022-10-14T09:39:09.016Z"}, {"id":"urn:ngsi-ld:GtfsShape:messina:CyclingPaths:CRS84:2","alternateName":"CyclingPaths","description":"Pista ciclabile Messina - Centro","location":{"coordinates":[[15.556404590607,38.197247547181],[15.55163025856,38.189414124437],[15.552043318749,38.189178012077],[15.552424192429,38.188967197626],[15.552581101656,38.189100010947],[15.552727282047,38.188996711505],[15.552932471037,38.188906060766],[15.553153753281,38.188773246963],[15.553459525108,38.188596161463],[15.55367410183,38.188478104766],[15.555133223534,38.19032059499],[15.556321442127,38.191861615525],[15.556497126818,38.19204186355],[15.556568875909,38.192110906863],[15.556604750454,38.192143320436],[15.556640625,38.192142005046],[15.557144880295,38.19711264068],[15.556860566139,38.197175878031],[15.556436777115,38.197289705411],[15.556404590607,38.197247547181]],"type":"LineString"},"name":"Messina - Centro","type":"GtfsShape","@context":["https:\/\/smartdatamodels.org\/context.jsonld","https:\/\/uri.etsi.org\/ngsi-ld\/v1\/ngsi-ld-core-context.jsonld"],"dateCreated":"2022-10-14T09:39:09.024Z","dateModified":"2022-10-14T09:39:09.024Z"}, {"id":"urn:ngsi-ld:GtfsShape:messina:CyclingPaths:CRS84:3","alternateName":"CyclingPaths","location":{"coordinates":[[15.565814,38.218324],[15.5655241012573,38.2208523355462],[15.5656099319458,38.2223020944011],[15.5667686462402,38.2248306744285],[15.5687856674194,38.226920900893],[15.56960105896,38.2284379631292],[15.5700302124023,38.2298201478416],[15.5710601806641,38.2329552499491],[15.5720043182373,38.2344721863219],[15.5731201171875,38.2355171685269],[15.5760169029236,38.2369497810148],[15.5778193473816,38.2380115814698],[15.5783772468567,38.2375059641392],[15.5791068077087,38.2379441660288]],"type":"LineString"},"name":"Messina - Litoranea","type":"GtfsShape","@context":["https:\/\/smartdatamodels.org\/context.jsonld","https:\/\/uri.etsi.org\/ngsi-ld\/v1\/ngsi-ld-core-context.jsonld"],"dateCreated":"2022-10-14T09:39:09.028Z","dateModified":"2022-10-14T09:39:09.028Z"}]
\ No newline at end of file
......@@ -3122,6 +3122,21 @@
]
}
},
{
"type": "Feature",
"properties": {
"name": "Casa di Kiposo Uesire",
"category": "Medical service",
"type": "Medical_Facility"
},
"geometry": {
"type": "Point",
"coordinates": [
15.5512628545939,
39.9924097586637
]
}
},
{
"type": "Feature",
"properties": {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment