После смены версии карт имя текстовому полю теперь не присваивается и соответственно адрес который ввел пользователь в строку поиска адреса не заносятся в базу. Как это исправить? У нас запрос передаётся формой через post и значение принимается сервером php. Без ajax.
<form action="map_save.php" method="POST"> <div> Имя<input id="name" name="name" type="text"/> </div> <div> Телефон<input id="tel" name="tel" type="text" /> </div> <div id="map"></div> <div id="marker" style="float:left;"></div> <p class="header" style="float:left;"> Перетащите метку на карту</p> <div style="clear: left"></div> <input id="latitude" name="x" type="hidden"/><input id="longitude" name="y" type="hidden" /> <!-- <input id="latitude" name="x" type="text"/><input id="longitude" name="y" type="text" /> --> <br /><br /><br /> <input type="submit" value="Сохранить и продолжить"> </form> <script> 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"); }; </script>
Запись в базу:
<?php function no_injection($str='') { $str = stripslashes($str); $str = mysql_real_escape_string($str); $str = trim($str); $str = htmlspecialchars($str); return $str; } $name=no_injection($_POST['name']); $tel=no_injection($_POST['tel']); $address=no_injection($_POST['adress']); //$adr_razbor = explode(',', $address); //if (count($adr_razbor)!=6) { //echo "Неправильно введён адрес"; //exit (); $x=no_injection($_POST['x']); $y=no_injection($_POST['y']); $zapros = mysql_query("insert into `hotels` (`id_user`, `name`, `tel`, `adres`, `x`, `y`) values ('".$_COOKIE['id']."', '".$name."', '".$tel."', '".$address."', '".$x."', '".$y."')"); echo "<script>location.href = 'objekt.php';</script>"; ?>
Как исправить? Голова уже кипит.