Use latlon2country instead of codegrid

This commit is contained in:
Pieter Vander Vennet 2020-12-04 21:30:35 +01:00
parent 89b2dc8a10
commit c2b1f6643b
6 changed files with 44 additions and 30 deletions

View file

@ -4,6 +4,7 @@ import State from "../State";
import opening_hours from "opening_hours"; import opening_hours from "opening_hours";
import {And, Or, Tag} from "./Tags"; import {And, Or, Tag} from "./Tags";
import {Utils} from "../Utils"; import {Utils} from "../Utils";
import CountryCoder from "latlon2country/lib/countryCoder";
class SimpleMetaTagger { class SimpleMetaTagger {
@ -61,28 +62,22 @@ export default class MetaTagging {
}) })
); );
private static country = new SimpleMetaTagger( private static country = new SimpleMetaTagger(
["_country"], "The country code of the point", ["_country"], "",
((feature, index) => { ((feature, index) => {
const coder = new CountryCoder("https://pietervdvn.github.io/latlon2country/");
const centerPoint = GeoOperations.centerpoint(feature); const centerPoint = GeoOperations.centerpoint(feature);
const lat = centerPoint.geometry.coordinates[1]; const lat = centerPoint.geometry.coordinates[1];
const lon = centerPoint.geometry.coordinates[0] const lon = centerPoint.geometry.coordinates[0]
// But the codegrid SHOULD be a number! // But the codegrid SHOULD be a number!
CodeGrid.getCode(lat, lon, (error, code) => { coder.CountryCodeFor(lon, lat, (countries) => {
if (error === null) { feature.properties["_country"] = countries[0];
feature.properties["_country"] = code; console.log("Country is ",countries.join(";"))
// There is a huge performance issue: if there are ~1000 features receiving a ping at the same time,
// The application hangs big time
// So we disable pinging all together
} else {
console.warn("Could not determine country for", feature.properties.id, error);
}
}); });
}) })
) )
private static isOpen = new SimpleMetaTagger( private static isOpen = new SimpleMetaTagger(
["_isOpen", "_isOpen:description"], "If 'opening_hours' is present, it will add the current state of the feature (being 'yes' or 'no')", ["_isOpen", "_isOpen:description"],
"If 'opening_hours' is present, it will add the current state of the feature (being 'yes' or 'no')",
(feature => { (feature => {
const tagsSource = State.state.allElements.addOrGetElement(feature); const tagsSource = State.state.allElements.addOrGetElement(feature);
tagsSource.addCallback(tags => { tagsSource.addCallback(tags => {
@ -98,7 +93,7 @@ export default class MetaTagging {
lat: tags._lat, lat: tags._lat,
lon: tags._lon, lon: tags._lon,
address: { address: {
country_code: tags._country country_code: tags._country.toLowerCase()
} }
}, {tag_key: "opening_hours"}); }, {tag_key: "opening_hours"});

View file

@ -27,7 +27,6 @@ export class QueryParameters {
this.initialized = true; this.initialized = true;
if (window?.location?.search) { if (window?.location?.search) {
console.log("Window.location.search is",window.location.search)
const params = window.location.search.substr(1).split("&"); const params = window.location.search.substr(1).split("&");
for (const param of params) { for (const param of params) {
const kv = param.split("="); const kv = param.split("=");
@ -51,7 +50,12 @@ export class QueryParameters {
if (QueryParameters.knownSources[key].data === undefined) { if (QueryParameters.knownSources[key].data === undefined) {
continue; continue;
} }
if (QueryParameters.knownSources[key].data === "undefined") {
continue;
}
if (QueryParameters.knownSources[key].data == QueryParameters.defaults[key]) { if (QueryParameters.knownSources[key].data == QueryParameters.defaults[key]) {
continue; continue;
} }

View file

@ -23,7 +23,7 @@ export default class State {
// The singleton of the global state // The singleton of the global state
public static state: State; public static state: State;
public static vNumber = "0.2.3b"; public static vNumber = "0.2.3d";
// The user journey states thresholds when a new feature gets unlocked // The user journey states thresholds when a new feature gets unlocked
public static userJourney = { public static userJourney = {

17
package-lock.json generated
View file

@ -4291,6 +4291,23 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
}, },
"latlon2country": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/latlon2country/-/latlon2country-1.0.3.tgz",
"integrity": "sha512-cIm43mCve6PcIoHIkyw/14YdyEyn+G6+m5wkbM6FR9/bZSHUDV4uQayFp3+kHLfnOgTqm9gwIQ6Py7YoduspDQ==",
"requires": {
"@types/node": "^14.14.10",
"jquery": "^3.5.1",
"turf": "^3.0.14"
},
"dependencies": {
"@types/node": {
"version": "14.14.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz",
"integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ=="
}
}
},
"lazy-cache": { "lazy-cache": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",

View file

@ -41,6 +41,7 @@
"escape-html": "^1.0.3", "escape-html": "^1.0.3",
"i18next-client": "^1.11.4", "i18next-client": "^1.11.4",
"jquery": "latest", "jquery": "latest",
"latlon2country": "^1.0.3",
"leaflet": "^1.7.1", "leaflet": "^1.7.1",
"leaflet-providers": "^1.10.2", "leaflet-providers": "^1.10.2",
"libphonenumber": "0.0.10", "libphonenumber": "0.0.10",

23
test.ts
View file

@ -1,20 +1,17 @@
//* //*
import CountryCoder from "latlon2country/lib/countryCoder";
import Direction from "./UI/Input/DirectionInput"; f
import {UIEventSource} from "./Logic/UIEventSource"; unction pr(countries) {
import {VariableUiElement} from "./UI/Base/VariableUIElement"; console.log(">>>>>", countries.join(";"))
}
const d = new UIEventSource("90");
new Direction(d).AttachTo("maindiv")
new VariableUiElement(d.map(d => "" + d + "°")).AttachTo("extradiv")
UIEventSource.Chronic(25, () => {
const degr = (Number(d.data) + 1) % 360;
d.setData(""+ degr);
return true;
})
coder.CountryCodeFor(3.2, 51.2, pr)
coder.CountryCodeFor(4.2, 51.2, pr);
coder.CountryCodeFor(4.92119, 51.43995, pr)
coder.CountryCodeFor(4.93189, 51.43552, pr)
coder.CountryCodeFor(34.2581, 44.7536, pr)
/*/ /*/