Страницы

Поиск по вопросам

Показаны сообщения с ярлыком геолокация. Показать все сообщения
Показаны сообщения с ярлыком геолокация. Показать все сообщения

четверг, 13 февраля 2020 г.

Координаты областей РФ

#геолокация #google_maps_api #google #geocoding


Заметил у Гугла очень нужную штуку - он знает координаты границ практически всех
областей/городов РФ.
Но, увы, выдрать оттуда их нельзя - границы рисуюися прям на картинках, а времени
(да и желания) парсить картинки нет.
Скажите, есть ли какое-то общедоступный справочник полигонов областей-городов РФ?    


Ответы

Ответ 1



Вот тут гляньте: Свободные данные по границам субъектов РФ и тут: Данные OpenStreetMap в форматах XML и PBF - если вы умеете работать с *.osm файлами, то для вас не составит труда вытащить нужные отношения. Подробная информация... UPD: Вот ещё есть глобальная база данных по границам. Там данные различного уровня детализации по административным и государственным границам в разных форматах (включая Google Earth kml).

Ответ 2



Если кому-то требуются координаты в формате JSON, есть готовый на GitHubGist (сервис обмена фрагментами кода). Разумеется, там огромное кол-во строк и привести здесь не представляется разумным.

пятница, 24 января 2020 г.

Как получить ближайшие города использую google maps api?

#javascript #google_maps_api #google_maps #геолокация


Задача - получить все города в радиусе 50км от заданной точки используя google maps
js api

1) поиск мест поблизости, nearbySearch - при указании types: ['locality', 'administrative_area_level_3']
- возвращает только 2 города для каждого запроса, а надо получить ВСЕ города в радиусе.
В доке не нашел про это ничего вообще.
если тип не указывать и парсить ответ самому - приходит максимум 60 мест, которые
могут не включать в себя все города.

2) массовый поиск, radarSearch - нельзя указать городской тип, приходит 200 мест,
в которых опять же могут не попасть города, и для каждого места надо посылать запрос
с его place_id для определения город это или нет - это слишком накладно

3) сделал много меток, разместил их по границам вьюпорта карты и на некотором отдалении,
проверяю каждую геокодированием находится в городе или нет - опять проблема - гугл
не дает геокодировать больше 5 точек, только с перерывами в 2сек, это не подходит

подскажите что ещё можно попробовать
    


Ответы

Ответ 1



Примените в строке запроса radius=5000, примерно так: https://maps.googleapis.com/maps/api/place/radarsearch/json?location=48.859294,2.347589&radius=50&types=locality|administrative_area_level_3&key=zzzzzz

четверг, 9 января 2020 г.

Как использовать геотаргетинг яндекса без карты?

#javascript #yandex_maps_api #геолокация #геокодирование


Определяю местоположение пользователя так:




    
        
    
    
        
        
        
Как в данном примере не создавать карту в DOM? Если убираю div(точнее id="YMapsID"), то возникает ошибка Uncaught TypeError: Cannot read property 'push' of undefined Если убираю - переменную map - тоже ошибка. Установить св-во hidden - тоже не хотелось бы.


Ответы

Ответ 1



Вот и вариант когда мы только получаем данные геопозиции пользователя, и не инициализируем карту. Делаем только инициализацию YMaps и после этого он уже получает данные геопозиции пользователя, В примере я после этого просто вывел эти данные в console․


понедельник, 6 января 2020 г.

Как узнать валюту страны, в которой находится пользователь?

#android #google_maps_api #геолокация


Как можно узнать валюту той страны, в которой на данный момент находится пользователь
Android-приложения? Предполагается, что пользователь часто путешествует и меняет страну.
Подскажите какой-нибудь сервис с открытым API.
    


Ответы

Ответ 1



Решение с конца: https://developer.android.com/reference/java/util/Currency.html Класс который отдает код валюты, символ и т.п. Делается из локали: Currency currency = Currency.getInstance(locale); Локаль можно сделать из координат: Geocoder geocoder = new Geocoder(ctx, Locale.getDefault()); List
addresses = geocoder.getFromLocation(latitude, longitude, 1); if (addresses.size() > 0) { Address address = addresses.get(0); regionCode = address.getCountryCode(); } Статья от первоисточника: https://developer.android.com/training/location/display-address.html regionCode должен содержать 2х символьный код, например 'RU','US','DE'. Из этого кода и делаем локаль: Locale whereMI = new Locale(regionCode); Мои извинения за бессвязность кода, надрал из разных проектов по частям. П.С. Еще вместо GPS для получения кода страны можно использовать ip-api.com/json . С известными оговорками конечно.

воскресенье, 5 января 2020 г.

Как карты определяют место с точностью до дома?

#wifi #карты #геолокация


Собственно сабж,
очень интересно как это возможно, что для этого используется, какие данные ?
Какие есть варианты ?
UPD
Имел ввиду с точек по Wi-fi
Сделали опыт:
Через телефон сделали точку, раздали мобильный интернет, и все же определил где мы.    


Ответы

Ответ 1



По улицам иногда ездит шпиенский автомобиль от компании Google. На автомашине установлено сканирующее устройство, которое засекает работающие wi-fi устройства и делает их привязку MAC адрес -> гео-координаты. Такой метод называется Wifi Positioning System Далее дело уже техники: запрос на сервера гугль по засеченным mac адресам, триангуляция, ваши координаты. Таким способом можно координаты и без наличия GPS приемника. Конечно такой способ иногда дает сбои. Допустим если wi-fi передатчик передвинули то и координаты будут неверны. Update Так устроен алгоритм триангуляции (немного математики)

Ответ 2



Существует несколько способов определения местонахождения мобильного телефона, а заодно и его владельца. Самыми распространёнными являются два: по встроенному датчику GPS и по сотовым вышкам оператора. Так как далеко не во всех мобильных телефонах встроены GPS модули, более популярным способом пока что остаётся именно поиск местонахождения мобильного телефона по сотовым вышкам оператора, также известный как Cell ID.

Перевести координаты в Google Maps

#google #google_maps #геолокация


Фактически стоит такая задача: имеются координаты (latitude и longitude) нескольких
точек из Google Maps. Нужно вычислить расстояния между этими точками в метрах. Насколько
я понимаю нужно преобразовать координаты в метрические - как это сделать? Меня интересует
не софт, а алгоритм и формулы, чтобы я мог внедрить их с собственную программу.    


Ответы

Ответ 1



Подключаем: И считаем (latLngA, latLngB - объекты типа "LatLng"): google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB); Ежели использование готоых велосипедов - не для Вас и Вы решили пойти по пути истинного самурая, то есть еще один способ. Расстояние по ортодромии можно рассчитать с использованием формулы синус-верзус: rad = function(x) {return x*Math.PI/180;} distHaversine = function(p1, p2) { var R = 6371; // earth's mean radius in km var dLat = rad(p2.lat() - p1.lat()); var dLong = rad(p2.lng() - p1.lng()); var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; return d.toFixed(3); }

воскресенье, 22 декабря 2019 г.

Как определить текущее местоположение пользователя и что лучше использовать?

#javascript #google_maps_api #yandex_maps_api #геолокация


Есть интернациональный проект. При совершении пользователем определенных действий,
необходимо получать данные о его местоположении (страна, город, улица(если возможно)),
и после уже отсылаем эти данные на наш сервер. Я видел примеры от гугл и яндекс карт,
там можно получить координаты. Я все же более склонен к использованию гугла. 

Есть ли пример получения этих данных при этом сделав как можно меньше запросов?

P.S. При этом мне не нужно что-либо отрисовывать на карте и рисовать саму карту
    


Ответы

Ответ 1



Силами HTML5 — navigator.geolocation.getCurrentPosition(). Браузер спрашивает у пользователя разрешение и в случае согласия отдает ОЧЕНЬ (в большинстве случаев) точные данные в виде широты и долготы. Потом это можно скормить https://developers.google.com/maps/documentation/geocoding/intro без карты. upd 2018: данный способ работает для https-сайтов Определять по IP. Есть бесплатная (но не самая полная) база — https://dev.maxmind.com/ru/geolite2/ Вот есть библиотека под нее — https://github.com/maxmind/GeoIP2-php В этом случае данные доступны сразу, но они не точные (Страна, город).

Ответ 2



Если на js, могу дать совет воспользоваться запросом, на сторонний сервис, после чего получить json данные с него, через jsonp.
На codepen: https://codepen.io/AndreyMyP/pen/gzXVXV

Ответ 3



Яндекс, кстати, предоставляет "API Geocoder" для HTTP запросов: https://tech.yandex.ru/maps/doc/geocoder/desc/concepts/input_params-docpage/ Ответ геокодера может быть сформирован в следующих форматах: XML, согласно спецификации YMapsML; JSON или JSONP. Чтобы начать работать с HTTP API Геокодера, нужно получить ключ для пакета «JavaScript API и HTTP Геокодер». Но есть ограничение на кол-во бесплатных запросов 25тыс в сутки. И определенные условия, например проект должен находиться в открытом доступе, т.е. если есть регистрация, то она должна быть открыта для всех.

понедельник, 16 декабря 2019 г.

Яндекс апи: Как определить город?

#javascript #yandex_maps_api #геолокация



    
    
        
        
        

Как в данном примере не создавать карту в DOM? Если убираю div(точнее id="YMapsID"), то возникает ошибка Uncaught TypeError: Cannot read property 'push' of undefined Если убираю - переменную map - тоже ошибка. Установить св-во hidden - тоже не хотелось бы.


Ответ

Вот и вариант когда мы только получаем данные геопозиции пользователя, и не инициализируем карту. Делаем только инициализацию YMaps и после этого он уже получает данные геопозиции пользователя, В примере я после этого просто вывел эти данные в console․


вторник, 12 февраля 2019 г.

Как узнать валюту страны, в которой находится пользователь?

Как можно узнать валюту той страны, в которой на данный момент находится пользователь Android-приложения? Предполагается, что пользователь часто путешествует и меняет страну. Подскажите какой-нибудь сервис с открытым API.


Ответ

Решение с конца: https://developer.android.com/reference/java/util/Currency.html Класс который отдает код валюты, символ и т.п. Делается из локали:
Currency currency = Currency.getInstance(locale);
Локаль можно сделать из координат:
Geocoder geocoder = new Geocoder(ctx, Locale.getDefault()); List

addresses = geocoder.getFromLocation(latitude, longitude, 1); if (addresses.size() > 0) { Address address = addresses.get(0); regionCode = address.getCountryCode(); }
Статья от первоисточника: https://developer.android.com/training/location/display-address.html
regionCode должен содержать 2х символьный код, например 'RU','US','DE'.
Из этого кода и делаем локаль:
Locale whereMI = new Locale(regionCode);
Мои извинения за бессвязность кода, надрал из разных проектов по частям.
П.С. Еще вместо GPS для получения кода страны можно использовать ip-api.com/json . С известными оговорками конечно.

понедельник, 4 февраля 2019 г.

Как карты определяют место с точностью до дома?

Собственно сабж, очень интересно как это возможно, что для этого используется, какие данные ? Какие есть варианты ? UPD Имел ввиду с точек по Wi-fi Сделали опыт: Через телефон сделали точку, раздали мобильный интернет, и все же определил где мы.


Ответ

По улицам иногда ездит шпиенский автомобиль от компании Google. На автомашине установлено сканирующее устройство, которое засекает работающие wi-fi устройства и делает их привязку MAC адрес -> гео-координаты. Такой метод называется Wifi Positioning System Далее дело уже техники: запрос на сервера гугль по засеченным mac адресам, триангуляция, ваши координаты. Таким способом можно координаты и без наличия GPS приемника. Конечно такой способ иногда дает сбои. Допустим если wi-fi передатчик передвинули то и координаты будут неверны. Update Так устроен алгоритм триангуляции (немного математики)