Клуб API Карт

март 2013
Построение маршрута "Кратчайший путь объехать несколько точек"
MurzNN
1 марта 2013, 10:51

Очень часто встает задача построить оптимальный маршрут для объезда нескольких точек в любом порядке.

Например машина выезжает со склада и должна привезти товар в 5 разных точек в любом порядке.

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

Существует ли какой-то способ вывести в Яндекс.Картах машрут объезда всех этих точек в оптимальном порядке, чтобы был наиболее кратчайший путь всего маршрута?

10 комментариев
Ymaps is not defined
karaush.elena
1 марта 2013, 14:01

(^_^)

Не могу разобраться с ошибкой. Почему-то не показывается карта.

Скрипт карты подключаю.

Сайт http://novostroykainfo.ru/addinfo

Нет комментариев
Панорамы улиц в API
skier2006
1 марта 2013, 14:54

Планируется ли поддержка панорам улиц в API?

И когда можно ожидать этот сервис?

 

5 комментариев
панорамы
Отвалилась ранее работающая карта (mapState is undefined)
mnemtsan
1 марта 2013, 17:47

Коллеги, добрый день.

Я использовал API ЯК для определения точки, которая будет обрабатывать заказ (точка определялась черз геокодирование адреса и получение полигона, в который входит этот адрес).

Используемая версия 2.0.18.

Все работало отлично, но пару дней назад карты отвалились с ошибкой

TypeError: userDefinedMapLoadResult.mapState is undefined

var mapBounds = userDefinedMapLoadResult.mapState.getBounds();

 

В чем может быть проблема?

Код можно посмотреть тут:

http://foodcatalog.ru/test/map.html

Работа с картами идет в методе  initMaps() 

5 комментариев
Кластеризация только идентичных объектов
h4mpy
1 марта 2013, 21:37

Пытаюсь использовать clusterer для базы недвижимости, объединять в кластеры квартиры в одном доме (при любом зуме соседние дома попадать в кластер не должны)
Но при указании gridsize = 1 все сильно тормозит, вплоть до зависания
с gridsize = 3 - более менее работает
может стоит добавить режим с gridsize = 0, который бы искал объекты только (!) с идентичными координатами, и объединял их в кластеры
или подскажите как добиться нормальной скорости clusterer для такой задачи

1 комментарий
кластеризатор,API 2.0
Макс. ширина карты в static api
zh00pel
1 марта 2013, 23:56

Может быть можно увеличить ширину формирумой картинки хотя бы до размеров листа А4 при печати?

2 комментария
Static API
Callback-функция при использовании хотспотов, api 2.0
Nerevarin999
2 марта 2013, 23:52

Доброе утро,

 

основательно застрял на этом моменте, как она должна выглядеть, или что делать? Все примеры и работающие примеры я нашел только на/для api 1.0

4 комментария
активные области,API 2.0
Ядекс локатор
kan35
3 марта 2013, 10:09

Надеюсь я правильно выбрал форум..:-)

 

С помощью специальных команд собираю данные о видимых базовых станциях и отправляю запрос на сервер:

xml=<ya_lbs_request>

 <common>

  <version>1.0</version>

  <api_key>ABZs_k8BAAAAwuKiIgMDFIOBkHmKur7FLvxs-j3k9gp1r7UAAAAAAAAAAADUbWq0RMczbcY3Qye-ItK7Im5r9A==</api_key>

 </common>

 <gsm_cells>

  <cell>

   <countrycode>250</countrycode>

   <operatorid>99</operatorid>

   <cellid>8d63</cellid>

   <lac>6d32</lac>

   <signal_strength>-106</signal_strength>

   <age>1000</age>

  </cell>

  <cell>

   <countrycode>250</countrycode>

   <operatorid>99</operatorid>

   <cellid>399b</cellid>

   <lac>6d32</lac>

   <signal_strength>-97</signal_strength>

   <age>1000</age>

  </cell>

  <cell>

   <countrycode>250</countrycode>

   <operatorid>99</operatorid>

   <cellid>3997</cellid>

   <lac>6d32</lac>

   <signal_strength>-107</signal_strength>

   <age>1000</age>

  </cell>

 </gsm_cells>

</ya_lbs_request>

В ответ получаю

<?xml version="1.0" encoding="UTF-8"?>

<ya_lbs_response>

  <position>

   <latitude>55.7487144</latitude>

   <longitude>37.5881462</longitude>

   <altitude>0.0</altitude>

   <precision>100000</precision>

   <altitude_precision>30.0</altitude_precision>

   <type>ip</type>

  </position>

</ya_lbs_response>

Я уже счастлив, что контакт наладился, НО!

Показывает точность 100000 и забрасывает на 30км от моего реального положения.

Как видно из ответа сервера параметр precision 100000, на что яндекс в инструкции говорит следующее:

В некоторых случаях Яндекс.Локатор сообщает о точности 100000 метров, которая означает, что до-

стоверно определить местоположение не удалось. Это происходит, если местоположение определяется

не по IP-адресу мобильного устройства, а по IP-адресу какого-либо публичного сервера или прокси-

сервера.

Но я ему даю нормальные координаты вышек, а не IP.Не может же быть, что в базе нет данных о моем месте, я ведь не на чукотке! В чем может быть дело, что не так?

Кстати, локатор может брать IP с которого произошло соединение для определения положения? - похоже так оно и есть, но ПОЧЕМУ?

 

Момент не понятный: мне модем выдает те же cellid в специфическом коде, похожем на hex (например 399b) и вообще число ли это, или просто текстовая строка?.. а в инструкции на яндекс локатор нет конкретизации в каком формате должно быть число. Хотя не попадаются шестнадцатричные, может в этом и беда. 

1 комментарий
Маркеры
prindin
3 марта 2013, 14:04

Как можно проверить существование маркера на карте?

Можно ли скрыть, а потом показать этот маркер, чтобы не удалать маркер с карты и потом добавлять?

2 комментария
метка,API 2.0
Вопрос по restrictMapArea
Антон Васильев
3 марта 2013, 18:40

Создаю карту

 

myMap = new ymaps.Map('map', {
                center: [60.011080,30.338997],
                zoom: 10,
                restrictMapArea:[[60.055334,30.038404],[59.812399,30.484037]]
            });

или так

 

myMap = new ymaps.Map('map', {
                center: [60.011080,30.338997],
                zoom: 10,
                restrictMapArea:true
            });

Подключение скрипта:

 

    <script src="http://api-maps.yandex.ru/2.0.25/?load=package.full&lang=ru-RU&mode=debug" type="text/javascript"></script>

   или так:

 

<script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU&mode=debug" type="text/javascript"></script>

Но свойство  restrictMapArea не срабатывает, карта прокручивается без проблем. Что я делаю не так? 

6 комментариев
API 2.0,область видимости
Получение текста hint
sataya200893
4 марта 2013, 08:17

Доброго времени суток!

создаю карту так -

var myMap = new ymaps.Map('ymaps', {
center: ['55.786764', '49.122853'],
zoom: 10
});
myMap.controls.add("mapTools").add("zoomControl").add("typeSelector");




Добавляю метки так -

var myPlacemark = new ymaps.Placemark(
['55.776092', '49.133678'] ,
{ hintContent: ' Дегаль, г.Казань, Татарстан республика, Россия ул. Салимжанова 17' },
{
iconImageHref: 'images/maps_balun.png',
iconImageSize: [57, 57],
iconImageOffset: [-6, -10]
});
myMap.geoObjects.add(myPlacemark);




Отлавливаю клик по метке так -

myMap.geoObjects.events.add('click', function (e) {

});

}




Как мне получить при клике содержимое hintContent ?

Иначе говоря мне необходимо как-то передать в аякс запрос id салона (думаю в hintContent добавлю скрытый элемент а в нем id, если получить содержимое hintContent, то можно будет получить и содержимое нужного элемента...)


Спасибо за ранее за помощь!!

2 комментария
API 2.0,хинт
Динамическая установка точек
lazutinia
4 марта 2013, 12:39

 

<script type="text/javascript">

        ymaps.ready(init);

var myMap, myPlacemark;

 

        function init () {

            var myMap = new ymaps.Map("map", {

                    center: [56.4118, 61.9315],

                    zoom: 11

                }, {

                    balloonMaxWidth: 200

                });

 

myMap.controls

                .add('zoomControl')

                .add('smallZoomControl', { right: 5, top: 75 })

                .add('mapTools');

 

            myMap.controls

                .add(new ymaps.control.ScaleLine())

                .add(new ymaps.control.MiniMap({

                    type: 'yandex#publicMap'

                }));

 

            myMap.events.add('contextmenu', function (e) {

            var coords = e.get('coordPosition');

            addPoint(coords[0].toPrecision(8),coords[1].toPrecision(8));

            });

        }

 

function addPoint(ex,ey)

   {

   $.post("ajax.php?action=addPoint",

      {

      x : ex,

      y : ey

      },

      function(data)

      {

      if(data.result == "OK")

         {

         myPlacemark = new ymaps.Placemark([data.x, data.y]);

         myPlacemark.properties.set({

         iconContent: data.content,

         hintContent: data.hint,

         balloonContent: data.balloon

         });

      myMap.geoObjects.add(myPlacemark);

      }

      else

      {

      alert("Ошибка добавления точки!");

      }

      },"json");

   }


</script>

 

В итоге - myMap not defined


Подскажите что не так? :)

 

2 комментария
метка,Javascript,API 2.0
Свой стиль маркеров
prindin
4 марта 2013, 15:12

Хочю сделать свой стиль маркера, чтобы был просто рисунок вместо стандартного маркера. Вот кусок кода:

var s = new ymaps.Style();

s.iconStyle = new ymaps.IconStyle();
s.iconStyle.offset = new ymaps.Point(-15, -15);
s.iconStyle.href = "/images/d.png";
s.iconStyle.size = new ymaps.Point(30, 30);

 

Выдается ошибка:

TypeError: ymaps.Style is not a constructor
var s = new ymaps.Style();

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

3 комментария
метка,API 2.0,стили
Список всех городов
dk-resume
4 марта 2013, 15:34

Здравствуйте, подскажите пожалуйста, где можно достать список всех городов, сел, населенных пунктов по России, обозначенных на Я-картах с принадлежностью к областям?

2 комментария
Выбор маршрута
lancx86
4 марта 2013, 17:45

Хочу на своем сайте реализовать подобное http://www.legru.it/?page_id=12 но с помощью Яндекс.Карт

3 комментария
маршрутизация
Все что можно и нельзя нарисовать на Canvas в API Яндекс.Карт
tekunova
4 марта 2013, 17:47
Все что можно и нельзя нарисовать на Canvas в API Яндекс.Карт

15 марта в 12:50 в Москве Антон Корзунов, разработчик интерфейсов API, выступит на конференции HTML5 Camp с докладом «Все что можно и нельзя нарисовать на Canvas в API Яндекс.Карт». Антон уже рассказывал о возможностях графики во второй версии API (видеозапись и презентация), но для HTML5 Camp он подготовил новый, более полный и интересный доклад.

Тезисы выступления:

— 3,5 технологии отображения графики.

— Наш опыт использования Canvas в Яндекс.Картах: какие проблемы решали, чего достигли.

— Дополнительные возможности для тех, кому нужно больше.

К сожалению, запись участников на конференцию уже закончилась, но в день конференции на сайте HTML5 Camp можно будет подключиться к онлайн-трансляции.

Anton
Нет комментариев
конференции,анонсы,Canvas,API 2.0,html5
показать картинку загрузки пока обрабатывается запрос
bratyxa-servis
4 марта 2013, 19:33

 Привет всем. У меня как только происходит клик по карте, javascript обращается к php файлу. В этот php файл передаются параметры долготы и широты и потом они подставляются в запрос таким образом

$lat = $_POST['lat'];
$lon = $_POST['lon'];
@$obj = simplexml_load_string(file_get_contents('http://geocode-maps.yandex.ru/1.x/?geocode='.$lon.','.$lat));

в общем я узнаю буквенное географическое положение и потом вывожу его под картой, но для этого надо несколько секунд. Мне обязательно надо показывать картинку загрузки пока обрабатывается запрос или просто вывести на экран под картой что мол идет определение местоположения. Как мне можно это сделать. Зарание большое спасибо.

4 комментария
jQuery
Удаление точки и обновление маршрута
akommv
5 марта 2013, 07:13

Всем привет.

 

Есть задача редактировать маршрут на карте, но в стандартном функционале редактирования не устраивает две вещи:

 

1. Удаление точки по двойному клику

2. Не показывается содержимое балуна при включенной опции удаления

 

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

 

Столкнулся с проблемой корректного удаления точки и обновления маршрута. 

 

Пытался вручную инициировать событие обновления маршрута после удаления с помощью route.editor.events.fire('routeupdate') но ничего не выходит

Точку просто удаляю из коллекции с помощью метода remove

 

Видимо надо каким то образом передать корректный Event объект при инициации события. 

 

Подскажите, пожалуйста как решить эту задачу

2 комментария
маршрутизация,API 2.0,метка
Балуны в YMaps.Router (версия 1.1)
shapeshifter2008
5 марта 2013, 09:26

Создаю маршрут с 2-х разных направлений, использовав:

new YMaps.Router([

                              new YMaps.GeoPoint(координата_1,координата_2),

                              new YMaps.GeoPoint(координата_3,координата_4)

                             ]);

Но при таком использовании построения маршрута появляются балуны, которые мне не нужны.

Как их скрыть (прошу написать пример)?

 

Используется версия 1.1

Нет комментариев
маршрутизация,API 1.x,балун
Какое решение будет правильным, если нужны особые геометрические вычисления?
DelLitt
5 марта 2013, 11:48

Есть задача: карта разбивается на области (геометричекие объекты), в на которых необходимо показывать количесвто точек (placemark) в них. Таких точек большое количество (более 5000 для Москвы).

Сейчас в БД хранятся только адреса таких точек, необходимо будет получить координаты для них, и сохранить их на сервере. Это возможно сделать с помощью сервиса Геокодирования (http://geocode-maps.yandex.ru/1.x/?geocode=Пушкаина, 20), получив XML, достать оттуда координаты. Это будут координаты проекции.

Решить задачу, скажем попадания точки в окуржность, заданную центром (в координатах) и радиусом (в метрах), без использования вашего API, а на стороне сервера, практически невозможно. Так как проекция окружности, не окружность и не эллипс (который можно было бы использовать, зная getBounds() окружности), но не выходит.

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

Но при этом, когда пользователь добаляет новый объект с адресом, ответ Геокодера в виде XML возвращает только координаты проекции. Есть ли возможность получить их в виде глобальных координат? Подключать API на страницу добавления объектов и вычисялть через него нужные координаты не выход, так как много объектов ежедневно импортируется в систему в виде XML данных, и обрабатывается только на сервере.

 Подскажите, пожалуйста, выход из такой ситуации, возможно кто-то решал подобные задачи, но я не нашел здесь ничего подобного. Спасибо!

6 комментариев
XML,координаты,геокодирование