8

Random coordinates for Google Maps with Typescript

 3 years ago
source link: https://marco.dev/2018/03/16/google-maps-typescript/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Random GPS Coordinates for Google Maps in TypeScript

What’s for?

I’m developing a small Mobile Application using Ionic and Angular. The app uses a Map to show to the user some nearby services.

For the test phase, as you can imagine, we don’t have real service to show and the user/demo can be anywhere.

To help with the test I created a simple generator of GPS coordinates based on the location of the user.

Here the package NPM and the code source GitHub

map_1.jpg

The coordinates of the 3 cook’s hats are generated from the library. The green point is the current position.

You can test the app yourself (alpha on google play store):

https://play.google.com/apps/testing/com.wicooks.next

How to use it

The library is still a work in progress but already working.

You simply need the starting coordinates (latitude/longitude) and pass the maximum number of kilometers of distance for the new coordinates.

The coordinates are created using this function:

import {LatLng as LatitudeLongitude} from "@molteni/coordinate-utils/dist/LatLng";

 generateCoordinates() : LatitudeLongitude {
    return RandomCoordinateUtils.randomCoordinateFromPositionWithExplicitLatLng(this.currentLocation.lat, this.currentLocation.lng, 0.1);
  };

To the current location are added/subtracted 0 to 100 meters to the longitude and latitude.

How it works

The calculation is not extremely accurate but is enough for the Use Cases of most developers.


const EARTH_RADIUS = 6378;

    export function addKMToLatitude(latitude : number, kilometers : number) : number {
        return latitude + (kilometers / EARTH_RADIUS) * (180 / Math.PI);
    }

    export function addKMToLongitude(latitude : number, longitude : number, kilometers : number) : number {
        return longitude + (kilometers / EARTH_RADIUS) * (180 / Math.PI) / Math.cos(latitude * Math.PI / 180);
    }

    export function  getKMperDegree() {
        return (2*Math.PI / 360) * EARTH_RADIUS;
    }
}

Author

Marco Molteni

Marco Molteni Blog


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK