A2Geo.ru - найти геокоординаты по списку адресов.
Без программирования. Результат в Excel.
Без программирования. Результат в Excel.
Работа с картой
В примере будет использована карта 2GIS, позволяющая отображать различные объекты (маркеры, попапы, геометрические объекты), а так же получать информацию о коодринатах (границ, центра) карты. Подробнее о её возможностях и функциях можно ознакомитсья по ссылке: https://api.2gis.ru/doc/maps/ru/quickstart/Пример работы с картой
При первой загрузке и при каждом перемещении отображается информация о текущей геоточке и о ближайших населенных пунктах.Показать исходный код с комментариями
Открыть пример на отдельной странице
<!DOCTYPE html>
<html>
<head>
<title>Карта</title>
<script src="https://files.geotree.ru/jquery/jquery-1.12.4.js"></script>
<script src="https://maps.api.2gis.ru/2.0/loader.js?pkg=basic"></script>
<style>
/* выравнить по центру содержимое попапа */
.dg-popup__container {
text-align: center;
}
/* оформление блока для списка населенных пунктов */
#nearest{
position: absolute;
left: 75px;
top: 10px;
z-index: 1000;
width: calc(100% - 150px);
background-color: rgba(255, 255, 255, 0.75);
padding: 5px;
border-radius: 5px;
}
</style>
</head>
<body>
<div id="map" style="width: 100%; height: 100vh;">
<div id="nearest" style=""></div>
</div>
<script>
var map,marker;
DG.then(function() {
map=DG.map("map", {
center: [66.417,94.25], // географический центр России
zoom: 3
})
.on("moveend", moveend) // событие вызывается при окончании передвижения карты
.on("move", marker_set_center); // событие вызывается во время любого движения карты
marker=DG.marker(map.getCenter()).addTo(map) //установка маркера в центр карты
.bindPopup("").openPopup(); // прикрепление попапа к маркеру
moveend();
});
// функция, вызываемая при окончании передвижения карты
function moveend() {
var center=map.getCenter();
var lat=center.lat; // широта центра карты
var lon=center.lng; // долгота центра карты
var url_api="https://api.geotree.ru/search.php?&lon="+lon+"&lat="+lat;
// url для получения информации о текущей точке
var url_geopoint=url_api+"&geopoint_only=1&limit=1";
$.ajax({
url: url_geopoint,
success: function(list){
if ("error" in list) {
//запрос завершен с ошибкой
text=list.error;
} else if (list.length>0) {
//в первом (и единственном) элементе списка будет информация о текущей геоточке
var item=list[0];
var text=item.value+"<br> ОКТМО: "+item.oktmo;
} else {
//если для текущей точки записи не найдены, значит точка за пределами РФ
text="точка за пределами РФ";
}
//обновим содержимое попапа
marker.bindPopup(text);
},error: function(e){console.log(e);}
});
// url для получения информации о ближайших населенных пунктах
var url_nearest=url_api+"&level=4&distance_sort=10000";
$.ajax({
url: url_nearest,
success: function(list){
if ("error" in list) {//запрос завершен с ошибкой
nearest=list.error;
} else {//запрос выполнен успешно
var nearest="";
for(i in list) { //формируем список населенных пунктов
var item=list[i]
nearest+="<strong>"+item.name_display+"</strong>"+"<i>"+distance_show(item.distance)+"</i>, ";
}
nearest="Ближайшие населенные пункты: "+nearest;
}
$("#nearest").html(nearest);
}
});
}
// функция для установки маркера в центр карты,
function marker_set_center() {
marker.setLatLng(map.getCenter())
}
// функция distance_show преобразует расстояние в метрах для удобного отображения:
// пример: вместо "3212345 метров" будет отображено "3.2 тыс.км"
function distance_show(m) {
if (m==0) {
return "";
}
if (m<1000) {
return " ("+m+" м)";
}
if (m<10000) {
return " ("+(Math.round(m/100)/10)+" км)";
}
if (m<1000000) {
return " ("+(Math.round(m/1000))+" км)";
}
return " ("+(Math.round(m/100000)/10)+" тыс.км)";
}
</script>
</body>
</html>