// инициализирует виджет DaData для поля Адрес
// Docs: https://confluence.hflabs.ru/pages/viewpage.action?pageId=207454322
function daDataInitComplex(constraintsList, iso = "RU") {
//console.log(iso);
let TOKEN = "4cd95e0f20b5f5e0adb1454d277e2f9014c2ddcb";//"2f6595e671df25163a441a544bbed3683791c5d0";
if (constraintsList.length > 0) {
//console.log(kladr_ids);
$("#address_complex").suggestions({
token: TOKEN,
type: "ADDRESS",
// вызывается, когда пользователь выбирает одну из подсказок
onSelect: onSelectSuggestionComplex,
constraints: constraintsList
});
} else {
$("#address_complex").suggestions({
token: TOKEN,
type: "ADDRESS",
constraints: {
locations: [
{ country_iso_code: iso },
]
},
// вызывается, когда пользователь выбирает одну из подсказок
onSelect: onSelectSuggestionComplex
});
}
}
// обработчик, когда была выбрана одно из подсказок виджета DaData
function onSelectSuggestionComplex(suggestion) {
$('.suggestForm').show();
$('.adres2 .more-block input').val('');
if (suggestion.data.qc_geo !== "0") {
//если выбрана точность до дома, то пробуем получить координаты из яндекса
if (suggestion.data.fias_level === "8" || suggestion.data.fias_level === "7" || suggestion.data.fias_level === "65") {
$.ajax({
url: '/ajax/getCoordinatesFromYandex.php',
method: "post",
data: {
"address": $("#address_complex").val()
},
success: function(data) {
let found = false;
if (data && data.indexOf('success:') === 0) {
data = data.replace('success:', '');
let coords = data.split(' ');
if (coords[0] && coords[1]) {
found = true;
myMapComplex.setCenter([coords[1], coords[0]], 14);
addPlacemarkComplex(coords[1], coords[0]);
$('.help-block.has-error[data-for="#address_complex"]').remove();
}
}
if (!found) {
if (!$('.help-block.has-error[data-for="#address_complex"]').length)
$('input#address_complex').after('
Необходимо уточнить координаты объекта на карте
');
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("eRROR: " + errorThrown + "; status:" + textStatus);
}
});
} else {
if (!$('.help-block.has-error[data-for="#address_complex"]').length)
$('input#address_complex').after('Необходимо уточнить координаты объекта на карте
');
}
} else {
$('.help-block.has-error[data-for="#address_complex"]').remove();
}
onYandexMapInitComplex
complexform.processAddress(suggestion.data);
$('#map-complex').show();
myMapComplex.setCenter([suggestion.data.geo_lat, suggestion.data.geo_lon], 14);
addPlacemarkComplex(suggestion.data.geo_lat, suggestion.data.geo_lon);
}
function suggestAddress(address) {
if (typeof address == "string") {
let query = {
query: address,
count: 1
};
let url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address";
let token = "4cd95e0f20b5f5e0adb1454d277e2f9014c2ddcb";//"2f6595e671df25163a441a544bbed3683791c5d0";
let options = {
method: "POST",
//mode: "cors",
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Token " + token
},
body: JSON.stringify(query)
};
fetch(url, options)
.then((response) => {
return response.json();
})
.then((result) => {
let data = result.suggestions[0].data;
processAddress(data)
})
.catch(error => console.log("error", error));
}
}
function getAddressByCoords(cords, input) {
let url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/geolocate/address";
let token = "4cd95e0f20b5f5e0adb1454d277e2f9014c2ddcb";//"2f6595e671df25163a441a544bbed3683791c5d0";
let options = {
method: "POST",
mode: "cors",
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Token " + token
},
body: JSON.stringify(cords)
};
fetch(url, options)
.then((response) => {
return response.json();
})
.then((result) => {
if (result.suggestions[0]) {
let data = result.suggestions[0].data;
let address = result.suggestions[0].value;
if ($('.help-block.has-error[data-for="#address_complex"]').length)
$('.help-block.has-error[data-for="#address_complex"]').remove();
if (typeof address !== "undefined" && data.qc_geo == "0") {
$(input).val(address);
//processAddress(data);
suggestAddress(address);
}
}
})
.catch(error => console.log("error", error));
}
var addPlacemarkComplex, setCenterComplex, myMapComplex, suggestComplex;
function onYandexMapInitComplex() {
let geo_lat = '62.090416';
if (typeof geo_lat !== "undefined") {
geo_lat.replace(/[^\.\d]/g, '');
}
let geo_lon = '129.74362';
if (typeof geo_lon !== "undefined") {
geo_lon.replace(/[^\.\d]/g, '');
}
var placemark = null;
myMapComplex = new yandexMapComplex.Map('map-complex', {
center: [
geo_lat,
geo_lon
],
zoom: 3,
controls: ['fullscreenControl', 'zoomControl']
}),
objectManager = new yandexMapComplex.ObjectManager({
clusterize: true,
clusterDisableClickZoom: true,
clusterOpenBalloonOnClick: false,
geoObjectOpenBalloonOnClick: false
});
objectManager.objects.options.set('iconColor', '#43a047');
addPlacemarkComplex = function(latitude, longitude) {
if (!latitude || !longitude) {
return;
}
if (typeof latitude !== "undefined")
latitude.toString().replace(/[^\.\d]/g, '');
if (typeof longitude !== "undefined")
longitude.toString().replace(/[^\.\d]/g, '');
if (placemark == null) {
placemark = new yandexMapComplex.Placemark([
Number.parseFloat(latitude).toPrecision(9),
Number.parseFloat(longitude).toPrecision(9)
], {}, { draggable: true });
myMapComplex.geoObjects.add(placemark);
/* Событие dragend - получение нового адреса */
placemark.events.add('dragend', function(e) {
let data = e.get('target').geometry.getCoordinates();
let cords = {
lat: data[0].toPrecision(9),
lon: data[1].toPrecision(9),
}
$('.latitude').val(cords.lat);
$('.longitude').val(cords.lon);
});
} else {
placemark.geometry.setCoordinates([Number.parseFloat(latitude).toPrecision(9), Number.parseFloat(longitude).toPrecision(9)]);
}
},
setCenterComplex = function() {
yandexMapComplex.geocode(complexform.region_label.replace(/\s+/g, ' ').trim()).then(function(res) {
var coord = res.geoObjects.get(0).geometry.getCoordinates();
myMapComplex.setCenter(coord, 6);
addPlacemarkComplex(coord[0].toPrecision(6), coord[1].toPrecision(6));
});
}
if (!isEmpty(complexform.complex.latitude) || !isEmpty(complexform.complex.latitude)) {
myMapComplex.setCenter([
(!isEmpty(complexform.complex.latitude) ? complexform.complex.latitude : "62.090416"),
(!isEmpty(complexform.complex.longitude) ? complexform.complex.longitude : "129.74362")
], 6);
addPlacemarkComplex((!isEmpty(complexform.complex.latitude) ? complexform.complex.latitude : "62.090416"),
(!isEmpty(complexform.complex.longitude) ? complexform.complex.longitude : "129.74362"));
} else {
if (!isEmpty(complexform.region_label)) {
setCenterComplex();
}
}
}
$(document).ready(function() {
$('body').on('click', '#map-modal-complex .closer', function() {
$('#map-modal-complex').hide();
$('#after_map-complex').hide();
return false;
})
/*var links = $('link');
if (!isEmpty(links)) {
for (var i = 0; i < links.length; i++) {
if ($(links[i]).attr('href') == 'https://cdn.jsdelivr.net/npm/suggestions-jquery@20.3.0/dist/css/suggestions.min.css') {
console.log('asdad');
}
}
}
var scripts = $('script');
if (!isEmpty(scripts)) {
for (var i = 0; i < scripts.length; i++) {
if ($(scripts[i]).attr('src') == 'https://api-maps.yandex.ru/2.1/?apikey=692f0a05-cb88-4158-88b9-06bc0dc93004&load=package.standard&lang=ru-RU&ns=yandexMap&onload=onYandexMapInit') {
console.log('asdadsrc');
}
}
}*/
})