# Loctome API # Terrain Elevation Service ![Elevation Service](https://node.loctome.com/images/elevation.png =100%x*) This service provide the functionality to enrich coords with the terrain elevation data If do you like use this service, please [Contact with us](https://loctome.com/web/english/contact-us) to request an api_key that allow the autentification. ## Who to use it? This API can be used with two format of input coords data ## With Shapes Coords https://node.loctome.com/height?json={"shape":[{"lat":40.712431,"lng":-76.504916},{"lat":40.712275,"lng":-76.605259}]}&api_key=elevation_api_key Test [Link](https://node.loctome.com/height?json={%22shape%22:[{%22lat%22:40.712431,%22lng%22:-76.504916},{%22lat%22:40.712275,%22lng%22:-76.605259}]}&api_key=elevation_api_key) ![Shape](https://node.loctome.com/images/shape.png =100%x*) ## With Encoded Coords You could be send multiple coords as compressed-encoded format https://node.loctome.com/height?json={"encoded":"morjnAme`eB?`A\\`@f@`A\\`@d@bB\\bBbAbBbB^bB`@~B?hC?`C`@bA`A?dCcAbBaC?gDeCaBiGcBiFcBeDgCcBgD?aCbBcAbB?`A`B`AhC`@bB?bA`@\\^]bAkB^aB_@aCcAkGaAaB`@e@^]bA\\?d@^?`@\\`@?^d@??_@\\cA^_@d@?\\^bA?|@?bA?d@?^??`@\\`@?^?`@?`@\""}&api_key=elevation_api_key Test [Link](https://node.loctome.com/height?json={%22encoded%22%3A%22morjnAme%60eB%3F%60A%5C%5C%60%40f%40%60A%5C%5C%60%40d%40bB%5C%5CbBbAbBbB%5EbB%60%40~B%3FhC%3F%60C%60%40bA%60A%3FdCcAbBaC%3FgDeCaBiGcBiFcBeDgCcBgD%3FaCbBcAbB%3F%60A%60B%60AhC%60%40bB%3FbA%60%40%5C%5C%5E%5DbAkB%5EaB_%40aCcAkGaAaB%60%40e%40%5E%5DbA%5C%5C%3Fd%40%5E%3F%60%40%5C%5C%60%40%3F%5Ed%40%3F%3F_%40%5C%5CcA%5E_%40d%40%3F%5C%5C%5EbA%3F%7C%40%3FbA%3Fd%40%3F%5E%3F%3F%60%40%5C%5C%60%40%3F%5E%3F%60%40%3F%60%40%5C%22%22}&api_key=elevation_api_key) ![Encoded](https://node.loctome.com/images/encoded.png =100%x*) ## Demo Map [Try the Map Demo App](https://node.loctome.com/map.html) ![Map](https://node.loctome.com/images/map.png =100%x*) ## Compress Encode javascript example code: @points = array of values lat1, lng1, lat2, lng2,... @precision = Number between 1 and 8, represent the decimal precision. i.e. 6 = 23.412345 function compress(points, precision) { try { var oldLat = 0, oldLng = 0, len = points.length, index = 0, encoded = ''; precision = Math.pow(10, precision); while (index < len) { // Round to N decimal places var lat = Math.round(points[index++] * precision); var lng = Math.round(points[index++] * precision); // Encode the differences between the points encoded += encodeNumber(lat - oldLat); encoded += encodeNumber(lng - oldLng); oldLat = lat; oldLng = lng; } return encoded; } catch (err) { msg(err); } } function encodeNumber(num) { try { var num = num << 1; if (num < 0) { num = ~(num); } var encoded = ''; while (num >= 0x20) { encoded += String.fromCharCode((0x20 | (num & 0x1f)) + 63); num >>= 5; } encoded += String.fromCharCode(num + 63); return encoded; } catch (err) { msg(err); } } ## Swagger API Definition Access to the Swagger API defintion in the folow [Link](https://editor.swagger.io/?url=https://node.loctome.com/swagger/elevation.yaml) ![openapi](https://node.loctome.com/images/swagger.png =100%x*)