Определения попадания точки в контур на основе комплексного анализа. Работа с яндекс картами.


Работа с картами яндекса и определение попадания точки в контур на плоскости.

Обработка приводит пример работы с картами яндекса.

Можно постоить свои области на карте и в последующем использовать их для определения попадания адреса в определенный район.

Расчет попадания точки в область использован из http://habrahabr.ru/post/125356/

13 Comments

  1. Yashazz

    Где-то я фрагменты этой обработки уже видел. И «ДекодироватьURL», и особенно функцию «hex»… Автор, не забывай указывать первоисточник, которым пользовался, плиз. 🙂

    А так — интересно своей работой с YMapsML.

    Reply
  2. ars

    (1) это не основные особенности и если бы я помнил где их взял :)) я бы конечно указал. Основа создавалась давно, последние изменения — это комплексный анализ. Изначально определение координат было основано на географических схемах 1С, но как показала практика в 1С попадание в область рассчитывается не так как у всех :)). Там область — это окружность в центре фигуры. И если фигуры сложные, то точка оказывается сразу в нескольких областях.

    Reply
  3. gosizo

    Яндекс карта. допустим я поставил несколько меток, можно ли как-то смасштабировать карту (не руками, а программно), что бы масштаб был максимально увеличен и в тоже время все метки были видны (в границах карты)?

    Reply
  4. ars

    (3) gosizo

    Яндекс карта. допустим я поставил несколько меток, можно ли как-то смасштабировать карту (не руками, а программно), что бы масштаб был максимально увеличен и в тоже время все метки были видны (в границах карты)?

    Мне кажется, это у же на java нужно писать + yandex maps api.

    Вот пример создания карты

    http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml

    +

    Установка размеров карты

    http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml#setBounds

    По сути тебе нужно координаты (левый верх, правый низ) свои найти и передать в setBounds

    Reply
  5. gosizo

    спасибо за информацию! Не могу сообразить как мне получить: «нужно координаты (левый верх, правый низ)» — у меня только список адресов в текстовом виде (например Москва Шаболовка 38 и т.д) Существует ли функция которая вернет адрес в виде координат ?

    Reply
  6. ars
    спасибо за информацию! Не могу сообразить как мне получить: «нужно координаты (левый верх, правый низ)» — у меня только список адресов в текстовом виде (например Москва Шаболовка 38 и т.д) Существует ли функция которая вернет адрес в виде координат ?

    В этой обработке же все есть, в поле адрес — набираем адрес, жмем получить координаты.

    Другой вариант через java api yandex-а — http://api.yandex.ru/maps/doc/geocoder/desc/concepts/About.xml

    PS:хотя в обработке как раз это и используется.

    Reply
  7. gosizo

    (6) спасибо! Буду пробовать

    Reply
  8. gosizo

    (6) получить координаты точек получилось, пытаюсь масштабировать — выдает ошибку «Объект не поддерживает свойство или метод getCenter». Пробовал делать так: в скрипт добавил функцию :

      function Mashtab(d1,s1,d2,s2)   {
    map.setBounds([[d1,s1], [d2,s2]], {
    checkZoomRange: true,
    callback: function(err) {
    if (err) {
    // Не удалось показать заданный регион
    // …
    }
    }
    });
    }   

    Показать

    в уже сформированную карту с метками передаю параметры масштабирования:

    &НаКлиенте
    Процедура Маштабировать(Команда)
    Широта1 = «62,26389300»;
    Долгота1 = «74,48290400»;
    Широта2 = «55,80956500»;
    Долгота2 = «37,71481500»;
    
    Элементы.ТекстHTML.Документ.parentWindow.eval(
    «Mashtab(«»» + Широта1 + «»», «»» + Долгота1 + «»», «»» + Широта2 + «»»,» + Долгота2 + «)»);
    КонецПроцедуры
    

    Показать

    что я делаю не правильно?

    Reply
  9. ars

    (8) gosizo,

    Широта1 = «62,26389300»;

    Долгота1 = «74,48290400»;

    Широта2 = «55,80956500»;

    Долгота2 = «37,71481500»;

    В значениях точно должны быть запятые?

    НУ и это не ко мне уже, я чесно говоря в java слабо разбираюсь.

    Но нужно во первых посмотреть тип объекта — методами которого пользуешься. Может тебе яндекс другой какой то объект возвращает.

    Reply
  10. Aspirant

    Можно ли выделить несколько флажков и передать в 1С их координаты (лучше адрес дома)?

    Вышлите пожалуйста на magefred@mail.ru обработку, очень хочется ее потестить

    Reply
  11. gfoods

    Здравствуйте. По какой-то причине обработка выдает ошибку.

    Использую файл https://maps.yandex.ru/export/usermaps/U2-2AR_ypRW-iiwTxyxH2nTK-w-K8LBE/

    {Форма.Форма(41)}: Ошибка при вызове метода контекста (Прочитать): Ошибка разбора XML:  — [6,3]
    Фатальная ошибка:
    Expected end of tag ‘hr’ SystemId: file://C:/Users/user1/AppData/Local/Temp/v8_A065_6e.xml
    Пока Чтение.Прочитать() Цикл
    по причине:
    Ошибка разбора XML:  — [6,3]
    Фатальная ошибка:
    Expected end of tag ‘hr’ SystemId: file://C:/Users/user1/AppData/Local/Temp/v8_A065_6e.xml
    

    Показать

    В временном файле XML оказалось вот что:

    <ht ml>
    <head><title>301 Moved Permanently</title></head>
    <body bgcolor=»white»>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx/1.6.2</center>
    </body>
    </html>
    
    Reply
  12. gfoods

    Спасение утопающих, дело рук самих утопающих.

    Все дело в том, что Яндекс перешел на защищенное HTTPS соединение.

    Для того чтоб обработка корректно сработала необходимо создавать защищенное соединение:

     ssl = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(
    СпособВыбораСертификатаWindows.Выбирать),
    Новый СертификатыУдостоверяющихЦентровWindows()); 
     НТТР = Новый HTTPСоединение(АдресСервера,443,,,ПроксиСервер,3,ssl);
    Reply
  13. kalevra67

    (12) gfoods, Большое спасибо, сам долго мучился, пока не наткнулся на ваш комментарий.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *