Клуб API Карт

Заголовок не указан

Пост в архиве.
Yes-it-is
30 июня 2011, 20:34
Задача тривиальная записать в MySQL базу координаты точки карты куда кликнул мышью.

Ни чего не нужно создавать ни каких меток, ничего.

Просто требуется считать географические координаты клика по карте, и например, вывести эти координаты через alert() ;
12 комментариев
Королев Михаил
30 июня 2011, 21:57

ну как-то так:

YMaps.Events.observe(map, map.Events.Click, function (mEvent) {
            var myHtml = "Место для курьера";
            f.maplongtitude.value=mEvent.getGeoPoint().getLng();
            f.maplatitude.value=mEvent.getGeoPoint().getLat();
            f.mapzoom.value=map.getZoom();
            f.GPS.value=wgsToGeo(mEvent.getGeoPoint().getLat())+','+wgsToGeo(mEvent.getGeoPoint().getLng());
            f.mapreset.style.display='';
            map.openBalloon(mEvent.getGeoPoint(), myHtml, {hasCloseButton: false, mapAutoPan: 0});
           });
 

 

где f. - объект form

Спасибо, но консоль Оперы пишет следующую ошибку по клику.

"Uncaught exception: TypeError: 'mEvent.getGeoPoint' is not a function"

Консоль Хрома следующую

"Uncaught TypeError: Object [object Object] has no method 'getGeoPoint'"

Консоль Эксплоуэра

"объект не поддерживает это свойство или метод."
Королев Михаил
1 июля 2011, 01:25


да, точняк :)

коду, откуда copy-paste не глядя сделал - более года.

у меня там прописано ещё

http://api-maps.yandex.ru/1.0...

Уже не открывается карта.
Королев Михаил
1 июля 2011, 01:42

я взял из функционирующего кода на сайте - так что ошибка где-то ещё у вас...

загляните на http://www.owg.ru например - при оформлении заказа можно указать для курьера точное место кликом

Всё разобрался в API 1.0 было:
YMaps.Events.observe(map, map.Events.Click, function (mEvent) ...

в API 1.1 стало:

YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) ...

Большое спасибо всё заработало.
Классический пример из документации даёт аналогичную ошибку.

YMaps.Events.observe(map, map.Events.Click, function (mEvent) {
  var myHtml = "Значение: " + mEvent.getGeoPoint() + " на масштабе " +
map.getZoom();
  map.openBalloon(mEvent.getGeoPoint(), myHtml);
});

Если вы не против Интернет Эксплорера, то вот решение, которое в буфер собирает координаты большого числа кликов. Результат можно в эксель или в Mysql-клиент вставлять: в каждой строке через табуляцию стоят номер и координата. Можете вывести на экран алертом или через openBalloon.

 

 

// При щелчке на карте показывается балун со значениями координат указателя мыши и масштаба

YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {

create client

myHtml = myHtml+ i + "\t" + mEvent.getGeoPoint()+"\n";

var myHtml = "" + mEvent.getGeoPoint();

map.openBalloon(mEvent.getGeoPoint(), myHtml);

if (window.clipboardData) {

    window.clipboardData.setData("Text", myHtml);

    i++;

}

});

 

 

Ещё раз подчеркну: работает только в ИЕ

>Ещё раз подчеркну: работает только в ИЕ

как вы этого добились?

Сорри, не понял иронии :) Или там нет иронии?

Работа с буфером обмена не кроссбраузерна. Типа это доступ к приватной информации. ИЕ при работе этого скрипта сначала спросит разрешение на доступ к clipboard и начнёт в него писать. А остальные браузеры в принципе не работают с ним.

это я не понял. Как сказал мне tinyMCE пару лет назад что клипборд только ручками, так и забыл я про него.

Спасибо конечно, но проблем с самой базой нет.

Точка после клика мгновенно улетает на сервер через XMLHttpRequest()

 

Проблема была в том, что API Яндекса не срабатывал. Они слегонцухи поменяли формат аргументов функции. (Я об этом выше написал) . Я использовал старый вариант для версии 1.0, хотя использовал API 1.1. В старой версии используется function (mEvent), а в новой function (map, mEvent).

 

Всего то и делов было.