Skip to content

Commit 553aded

Browse files
tnagorrafrozenhelium
authored andcommitted
Support quad_key on Leaflet
- Fix env names - Add env names on .env.example - Remove unused env names on docker-compose
1 parent f0af826 commit 553aded

File tree

4 files changed

+62
-13
lines changed

4 files changed

+62
-13
lines changed

docker-compose.yaml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,10 @@ services:
138138
REACT_APP_SENTRY_DSN: ${MANAGER_DASHBOARD_SENTRY_DSN}
139139
REACT_APP_SENTRY_TRACES_SAMPLE_RATE: ${MANAGER_DASHBOARD_SENTRY_TRACES_SAMPLE_RATE}
140140
REACT_APP_COMMUNITY_DASHBOARD_URL: ${MANAGER_DASHBOARD_COMMUNITY_DASHBOARD_URL}
141-
REACT_IMAGE_BING_API_KEY: '${IMAGE_BING_API_KEY}'
142-
REACT_IMAGE_ESRI_API_KEY: '${IMAGE_ESRI_API_KEY}'
143-
REACT_IMAGE_ESRI_BETA_API_KEY: '${IMAGE_ESRI_BETA_API_KEY}'
144-
REACT_IMAGE_MAPBOX_API_KEY: '${IMAGE_MAPBOX_API_KEY}'
145-
REACT_IMAGE_MAXAR_PREMIUM_API_KEY: '${IMAGE_MAXAR_PREMIUM_API_KEY}'
146-
REACT_IMAGE_MAXAR_STANDARD_API_KEY: '${IMAGE_MAXAR_STANDARD_API_KEY}'
141+
REACT_APP_IMAGE_BING_API_KEY: '${IMAGE_BING_API_KEY}'
142+
REACT_APP_IMAGE_MAPBOX_API_KEY: '${IMAGE_MAPBOX_API_KEY}'
143+
REACT_APP_IMAGE_MAXAR_PREMIUM_API_KEY: '${IMAGE_MAXAR_PREMIUM_API_KEY}'
144+
REACT_APP_IMAGE_MAXAR_STANDARD_API_KEY: '${IMAGE_MAXAR_STANDARD_API_KEY}'
147145
volumes:
148146
- manager-dashboard-static:/code/build/
149147
command: bash -c 'yarn build'

manager-dashboard/.env.example

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,10 @@ REACT_APP_FIREBASE_STORAGE_BUCKET=
1010
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=
1111
REACT_APP_FIREBASE_APP_ID=
1212
REACT_APP_COMMUNITY_DASHBOARD_URL=
13+
14+
REACT_APP_IMAGE_BING_API_KEY=
15+
REACT_APP_IMAGE_MAPBOX_API_KEY=
16+
REACT_APP_IMAGE_MAXAR_PREMIUM_API_KEY=
17+
REACT_APP_IMAGE_SINERGISE_API_KEY=
18+
# -- NOTE: not used and seems to be discontinued
19+
REACT_APP_IMAGE_MAXAR_STANDARD_API_KEY=

manager-dashboard/app/components/GeoJsonPreview/index.tsx

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,51 @@ import React from 'react';
22
import {
33
map as createMap,
44
Map,
5-
tileLayer,
65
geoJSON,
6+
7+
TileLayer,
8+
Coords,
9+
Util,
710
} from 'leaflet';
811
import { _cs } from '@togglecorp/fujs';
912

1013
import styles from './styles.css';
1114

15+
const toQuadKey = (x: number, y: number, z: number) => {
16+
let index = '';
17+
for (let i = z; i > 0; i -= 1) {
18+
let b = 0;
19+
// eslint-disable-next-line no-bitwise
20+
const mask = 1 << (i - 1);
21+
// eslint-disable-next-line no-bitwise
22+
if ((x & mask) !== 0) {
23+
b += 1;
24+
}
25+
// eslint-disable-next-line no-bitwise
26+
if ((y & mask) !== 0) {
27+
b += 2;
28+
}
29+
index += b.toString();
30+
}
31+
return index;
32+
};
33+
34+
const BingTileLayer = TileLayer.extend({
35+
getTileUrl(coords: Coords) {
36+
const quadkey = toQuadKey(coords.x, coords.y, coords.z);
37+
const subdomains = this.options.subdomains;
38+
39+
// eslint-disable-next-line no-underscore-dangle
40+
const url = this._url
41+
.replace('{subdomain}', subdomains[(coords.x + coords.y) % subdomains.length])
42+
.replace('{quad_key}', quadkey);
43+
44+
console.log(url);
45+
return url;
46+
},
47+
toQuadKey,
48+
});
49+
1250
interface Props {
1351
className?: string;
1452
geoJson: GeoJSON.GeoJSON | undefined;
@@ -38,8 +76,14 @@ function GeoJsonPreview(props: Props) {
3876
1,
3977
);
4078

41-
const layer = tileLayer(
42-
url || 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
79+
const finalUrl = url || 'https://tile.openstreetmap.org/{z}/{x}/{y}.png';
80+
const quadKeyUrl = finalUrl.indexOf('{quad_key}') !== -1;
81+
const Layer = quadKeyUrl
82+
? BingTileLayer
83+
: TileLayer;
84+
85+
const layer = new Layer(
86+
finalUrl,
4387
{
4488
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
4589
// subdomains: ['a', 'b', 'c'],

manager-dashboard/app/views/NewTutorial/utils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ import {
2525
IconKey,
2626
} from '#utils/common';
2727

28-
const BING_KEY = process.env.REACT_IMAGE_BING_API_KEY;
29-
const MAPBOX_KEY = process.env.REACT_IMAGE_MAPBOX_API_KEY;
30-
const MAXAR_PREMIUM = process.env.REACT_IMAGE_MAXAR_PREMIUM_API_KEY;
31-
const MAXAR_STANDARD = process.env.REACT_IMAGE_MAXAR_STANDARD_API_KEY;
28+
const BING_KEY = process.env.REACT_APP_IMAGE_BING_API_KEY;
29+
const MAPBOX_KEY = process.env.REACT_APP_IMAGE_MAPBOX_API_KEY;
30+
const MAXAR_PREMIUM = process.env.REACT_APP_IMAGE_MAXAR_PREMIUM_API_KEY;
31+
const MAXAR_STANDARD = process.env.REACT_APP_IMAGE_MAXAR_STANDARD_API_KEY;
3232

3333
export type ColorKey = 'red'
3434
| 'pink'

0 commit comments

Comments
 (0)