Skip to content

Commit

Permalink
feat: add latlon without label, set zoom precision
Browse files Browse the repository at this point in the history
  • Loading branch information
nobkd committed Mar 31, 2023
1 parent d80971b commit 7d0be1f
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 20 deletions.
22 changes: 9 additions & 13 deletions src/map/map.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import L from 'leaflet';

import { readPB, readQ, type MapData } from './utils/read';
import { type TileType } from './utils/parsePB';
import { type TileType, tileTypes } from './utils/parsePB';

type Tiles = {
[K in TileType]: {
Expand All @@ -27,8 +27,6 @@ const gQuery: string = 'q';
const gZoom: string = 'z';
const params: URLSearchParams = new URLSearchParams(document.location.search);

console.log(params);

let mapData: MapData = {};

if (params.has(gPos)) {
Expand All @@ -53,25 +51,23 @@ const map: L.Map = L.map('map', {
minZoom: 0.5,
});

if (mapData.area) {
if (mapData.markers?.length == 0 && mapData.area) {
map.setView([mapData.area.lat, mapData.area.lon]);
}

if (mapData.markers) {
mapData.markers.forEach((marker) => {
let mapMarker = L.marker([marker.lat, marker.lon]).addTo(map);
if (marker.label) {
mapMarker.bindPopup(marker.label, { closeButton: false }).openPopup();
}
});

if (mapData.markers.length === 1) {
let mapMarker = mapData.markers[0];
map.setView([mapMarker.lat, mapMarker.lon]);
}

mapData.markers.forEach((marker) => {
let mapMarker = L.marker([marker.lat, marker.lon]).addTo(map);
mapMarker.bindPopup(marker.label, { closeButton: false }).openPopup();
});
}

L.tileLayer(tileProviders[mapData.tile ?? 'roadmap'].layer, {
L.tileLayer(tileProviders[mapData.tile || tileTypes[0]].layer, {
maxZoom: 19,
attribution: tileProviders[mapData.tile ?? 'roadmap'].attr,
attribution: tileProviders[mapData.tile || tileTypes[0]].attr,
}).addTo(map);
2 changes: 1 addition & 1 deletion src/map/utils/parsePB.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export type TileType = 'roadmap' | 'satellite';
export const tileTypes = ['roadmap', 'satellite'];
export const tileTypes: TileType[] = ['roadmap', 'satellite'];

function convertType(item: string): [string | TileType | number, boolean] {
item = item.replace(/^\d+/, '');
Expand Down
5 changes: 3 additions & 2 deletions src/map/utils/read.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const dmsMatch: RegExp = /^\d{1,2}°\d{1,2}'\d{1,2}\.\d"(N|S) \d{1,2}°\d{1,2}'\
export type Marker = {
lat: number;
lon: number;
label?: string;
label: string;
};

export type MapData = {
Expand Down Expand Up @@ -40,7 +40,7 @@ export async function readPB(param: string): Promise<MapData> {
lon: mapArea[1],
};

mapData.zoom = getMapZoom(mapArea[0]);
mapData.zoom = getMapZoom(mapArea[0]) ?? 17;

let currMarkers: any[] | string = data[1];
if (typeof currMarkers !== 'string') {
Expand All @@ -54,6 +54,7 @@ export async function readPB(param: string): Promise<MapData> {
mapData.markers?.push({
lat: lat,
lon: lon,
label: `${lat} ${lon}`,
});
}
} else {
Expand Down
6 changes: 2 additions & 4 deletions src/map/utils/zoom.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
// https://groups.google.com/g/google-earth-browser-plugin/c/eSL9GlAkWBk/m/T4mdToJz_FgJ

const factor: number = 35200000;
const precision: number = 10;

export function getMapZoom(alt: number): number {
console.log(alt);

// convert GE lookAt range to GMap zoom
let zoom = Math.log2(factor / alt) * 1.225;
console.log(zoom);
zoom = Math.round((zoom + Number.EPSILON) * precision) / precision;

if (zoom < 0) {
zoom = 0;
Expand Down

0 comments on commit 7d0be1f

Please sign in to comment.