Elasticsearch -Есть способ, которым я могу комбинировать гео-ограничивающую рамку с расстоянием - PullRequest
0 голосов
/ 24 декабря 2018

Есть ли способ, которым я могу объединить ограничивающий географический блок (https://bonsai.io/blog/efficient-sorting-of-geo-distances-in-elasticsearch) с расстоянием. В основном я хочу получить данные в ограничивающем географическом поле в 100 км. То есть top_left lat / long будет в 50 км от центра lat /длинный и такой же для bottom_right.

1 Ответ

0 голосов
/ 31 декабря 2018

Этот помог.https://zaemis.blogspot.com/2011/01/geolocation-search.html

<code>    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Geo location</title>
</head>
<body>
    <pre id="geolocation">
const currentLocation = {lat: 10.7904833, // Tiruchirapalli, Tamilnadu lng: 78.7046725 // Tiruchirapalli, Tamilnadu} const distance = 31;// в милях (31 миля равна 50 км) function degToRad (d) {return d * (Math.PI / 180);} function radToDeg (r) {return r * (180 / Math.PI);} назначение функции (широта, долгота, азимут, расстояние) {радиус радиуса = 3963.19;const rLat = degToRad (lat);const rLon = degToRad (lon);const rBearing = degToRad (подшипник);const rAngDist = расстояние / радиус;const rLatB = Math.asin (Math.sin (rLat) * Math.cos (rAngDist) + Math.cos (rLat) * Math.sin (rAngDist) * Math.cos (rBearing));const rLonB = rLon + Math.atan2 (Math.sin (rBearing) * Math.sin (rAngDist) * Math.cos (rLat), Math.cos (rAngDist) - Math.sin (rLat) * Math.sin (rLatB));return {lat: radToDeg (rLatB), lng: radToDeg (rLonB)}};/ ** * Функция назначения вызова * @param {широта, долгота, градус, расстояние в милях} * / const границ = [{topLeft: пункт назначения (currentLocation.lat, currentLocation.lng, 315,31), bottomRight: пункт назначения (currentLocation.lat, currentLocation.lng, 135,31)}];document.getElementById ("геолокация"). innerHTML = JSON.stringify (boundaries [0], undefined, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...