Клуб API Карт

Получить через POST значение поля поиска адреса

Пост в архиве.

Всем здравствуйте, столкнулись с проблемой: После изменения яндексом класса поля поиска адреса на карте данные которые вводил пользователь перестали добавляться в базу данных, кто нибудь с этим сталкивался? И как правильно должен выглядеть скрипт что бы получить через POST значение поля поиска адреса?

11 комментариев
Никак не должен выглядеть. Потому что "POST" совершенно из другой оперы.
И не после изменения класса поля поиска, а после очередной смены версии.
Дмитрий Федотов
21 июня 2016, 19:07
Тогда как можно решить эту проблему? Как данные из поля поиска адреса добавить в базу?
Дмитрий Федотов,
Опишите подробнее, какие именно данные, откуда и когда вы хотите добавлять в базу. Может стоит приложить скриншот
Дмитрий Федотов
22 июня 2016, 11:23
dimik,
Мы хотим добавить данные которые ввел пользователь в строку поиска адреса на карте в базу данных, но не получается почему-то.
Дмитрий Федотов,



var searchControl = myMap.controls.get('searchControl');
searchControl.events.add('submit', function () {
  $.post({
    url: url,
    data: {request: searchControl.getRequestString()}
  });
});
Дмитрий Федотов
22 июня 2016, 18:25
dimik,
Еще раз прошу прощения за беспокойство, а есть какая нибудь возможность присвоить name полю адрес после загрузки карты? Такой скрипт вобще существует?
Дмитрий Федотов
22 июня 2016, 22:02
dimik,
Это ajax запрос. А у нас запрос передаётся формой через post и значение принимается сервером php. Без ajax.
Дмитрий Федотов,
Какая-то надуманная проблема.
Cоздайте динамически тег Form вставьте в него Input и вызовите submit на форме
Дмитрий Федотов
23 июня 2016, 17:38
dimik,
С этим понятно, но совсем не понятно как присвоить имя к текстовому полю адрес. Как должен выглядеть такой скрипт?
Дмитрий Федотов
24 июня 2016, 18:56
dimik,
Вот наш скрипт который получился. Имя текстовому полю не присваивается и соответственно адрес который ввел пользователь в строку поиска адреса не заносятся в базу. Как это исправить?


jQuery(function () {
ymaps.ready(init);
jQuery("#map input").attr("name", "adress");

});
function init () {
var map = new ymaps.Map('map', {
center: [44.32907842796631, 38.74097519022592],
zoom: 9
}, {
searchControlProvider: 'yandex#search'
}),
markerElement = jQuery('#marker'),
dragger = new ymaps.util.Dragger({
// Драггер будет автоматически запускаться при нажатии на элемент 'marker'.
autoStartElement: markerElement[0]
}),
// Смещение маркера относительно курсора.
markerOffset,
markerPosition;
dragger.events
.add('start', onDraggerStart)
.add('move', onDraggerMove)
.add('stop', onDraggerEnd);
function onDraggerStart(event) {
var offset = markerElement.offset(),
position = event.get('position');
// Сохраняем смещение маркера относительно точки начала драга.
markerOffset = [
position[0] - offset.left,
position[1] - offset.top
];
markerPosition = [
position[0] - markerOffset[0],
position[1] - markerOffset[1]
];
applyMarkerPosition();
}
function onDraggerMove(event) {
applyDelta(event);
}
function onDraggerEnd(event) {
applyDelta(event);
markerPosition[0] += markerOffset[0];
markerPosition[1] += markerOffset[1];
// Переводим координаты страницы в глобальные пиксельные координаты.
var markerGlobalPosition = map.converter.pageToGlobal(markerPosition),
// Получаем центр карты в глобальных пиксельных координатах.
mapGlobalPixelCenter = map.getGlobalPixelCenter(),
// Получением размер контейнера карты на странице.
mapContainerSize = map.container.getSize(),
mapContainerHalfSize = [mapContainerSize[0] / 2, mapContainerSize[1] / 2],
// Вычисляем границы карты в глобальных пиксельных координатах.
mapGlobalPixelBounds = [
[mapGlobalPixelCenter[0] - mapContainerHalfSize[0], mapGlobalPixelCenter[1] - mapContainerHalfSize[1]],
[mapGlobalPixelCenter[0] + mapContainerHalfSize[0], mapGlobalPixelCenter[1] + mapContainerHalfSize[1]]
];
// Проверяем, что завершение работы драггера произошло в видимой области карты.
if (containsPoint(mapGlobalPixelBounds, markerGlobalPosition)) {
// Теперь переводим глобальные пиксельные координаты в геокоординаты с учетом текущего уровня масштабирования карты.
var geoPosition = map.options.get('projection').fromGlobalPixels(markerGlobalPosition, map.getZoom());
xy = geoPosition.join(' ');
xyz = geoPosition.join(' ');
xy = xy.split(' ')
$("#latitude").val(xy[0]);
$("#longitude").val(xy[1]);
if ($(".ymaps-2-1-39-input__control").val()=="")
{
var myGeocoder = ymaps.geocode(xyz, {kind: 'house'});
myGeocoder.then(
function (res) {
var street = res.geoObjects.get(0);
var name = street.properties.get('text');
$(".ymaps-2-1-39-input__control").val(name);

alert (name);
}
);

}
}
}
function applyDelta (event) {
// Поле 'delta' содержит разницу между положениями текущего и предыдущего события драггера.
var delta = event.get('delta');
markerPosition[0] += delta[0];
markerPosition[1] += delta[1];
applyMarkerPosition();
}
function applyMarkerPosition () {
markerElement.css({
left: markerPosition[0],
top: markerPosition[1]
});
}
function containsPoint (bounds, point) {
return point[0] >= bounds[0][0] && point[0] <= bounds[1][0] &&
point[1] >= bounds[0][1] && point[1] <= bounds[1][1];
}

}

//window.onload = function () {
// $("input.ymaps-2-1-39-input__control").attr("name", "adress");
//};