Здравствуйте.
Начинаю осваивать API Яндекс.Карт (при этом, совершенно не зная JS) и уже около часа бъюсь с проблемой определения координат метки.
Ситуация такая. При загрузке страницы карте отдается название города (например строка "Россия, Москва"), в центр которого ставится метка. Метку можно двигать, т.е. указывать более точное местоположение. После завершения перемещений метки пользователь нажимает кнопку "Сохранить" и координаты должны отдаться POST-методом на сервер.
Единственное что не получается - это получить координаты. С тем как отдать их серверу проблем, думаю, не будет.
Так вот, вопрос, - как получить координаты метки, после ее перемещения по карте?
В <body> добавлено onload="showAddress(\''.$q.'\');" (такие странные ковычки, потому что BODY внутри echo PHP-скрипта)
Исходный код взят из примера про поиск по адресу и отсюда и, в итоге, я "намешал" вот что:
<script type="text/javascript">
var map, geoResult;
// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
var typeControl = new YMaps.TypeControl([YMaps.MapType.MAP, YMaps.MapType.SATELLITE, YMaps.MapType.HYBRID], [1,2]);
map.addControl(typeControl);
});
// Функция для отображения результата геокодирования
// Параметр value - адрес объекта для поиска
function showAddress (value) {
// Удаление предыдущего результата поиска
map.removeOverlay(geoResult);
// Запуск процесса геокодирования
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});
// Создание обработчика для успешного завершения геокодирования
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
// Если объект был найден, то добавляем его на карту
// и центрируем карту по области обзора найденного объекта
if (this.length()) {
geoResult = this.get(0);
//map.addOverlay(geoResult);
map.setBounds(geoResult.getBounds());
var placemark = new YMaps.Placemark(map.getCenter(), {draggable: true});
map.addOverlay(placemark);
}else {
alert("Ничего не найдено")
}
});
// Процесс геокодирования завершен неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
alert("Произошла ошибка: " + error);
});
}
</script>