Клуб API Карт

февраль 2012
API - Проблема или fail?
Ант С.
1 февраля 2012, 01:50

Всем привет! Народ, у меня сложилась вот такая беда: хочу сделать у ся на ресурсе карту как у Yota в разделе "Зона охвата", но чего то я все равно не понимаю или лыжи не едут?

В общем: ключ есть апи-шный, далее создаю "народную карту" дальше тупняк... не понимаю ничего... как бы я не старался, что бы не делал - стопор и все... кто нить знает/подскажет дураку что и куда надо пихать?

Заранее ооооооооогромное спасибо:)

3 комментария
API 1.x
добавить новый YmapsML оверлей вызовом функции
RENTony
1 февраля 2012, 07:43

как создать и добавить новый YmapsML оверлей вызовом функции?

так не работает:

 

 

YMaps.jQuery(function () {

 function test() {
ml_6 = new YMaps.YMapsML('http://rentony.ru/add/rent11.php'
map.addOverlay(ml_6);

})

test( //пытаюсь вызвать функцию 

4 комментария
API 1.x
Аттрибут title не отображается
Константин
1 февраля 2012, 15:57

Есть плейсмарк, рендерится с вот таким темплейтом

 

    <script type="text/x-jquery-tmpl" id="JSTemplate_auth_user_point">
        <a class="current-user-point" title="Ваше местоположение (определено автоматически)"></a>
    </script>

смотрю в файрбаге - тайтл есть, но при наведении он не отображается. Очень не хочется использовать hint, он безбожно тормозит. Хочется нативное решение с аттрибутом title.

4 комментария
API 1.x
генерация и вывод YMapsML с Ajax
wow.goldss
1 февраля 2012, 19:09

файл  rent11.php возвращает ответ в виде XML, если делать так: "ml = new YMaps.YMapsML(... /add/rent11.php ) " то всё работает, всё выводится, а если с аякс то ничего не работает(, подскажите что не так делаю

$.ajax({
type: "POST",
url: "/add/rent11.php",
success: function(xml) {
YMaps.jQuery( function () {
ml = new YMaps.YMapsML(xml);
map.addOverlay(ml);
})
}
}

 

5 комментариев
API 1.x
Проблемы с отображением description в балуне
homez386
1 февраля 2012, 19:54

Всем привет!

По работе мне нужно доработать сайт оператора такси в Санкт-Петербурге, приаттачив к форме заказа Яндекс-карту, с тем, чтобы точки поездке можно было выбирать и на ней. Карта должна быть синхронизирована с форомой: ввел адрес в форме - он появляется на карте, отметил точку на карте - соответствующий адрес появляется в форме.

Пока я работаю над отображением адресов из формы на карте, они появляются там со значками A, B, C и т.д., по порядку соответствующим точкам поездки, включая возможные промежуточные. Отмечать самому точки на карте тоже можно, но это пока не пропогируется в форму, и значок ставится без буквы.

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

 point[0] = new YMaps.Placemark(myp, {style: style[0]}
 point[0].name = 'Адрес';
 point[0].description = mytext;    
 map.addOverlay(point[0]
 alert(point[0].description);

 Здесь описание - это адрес точки маршрута. Я беру адрес, возвращенный геокодером и делаю некоторые замены. Например, дом на Балтийской улице должен отображаться так:

С-Пб, Балтийская, 17

Когда я щелкаю по маркеру и открывается балун, то отображается так:

Адрес

С-Пб, Балтийская,

Номер дома куда-то пропадает! Как видите, я сделал алерт для description, адрес выводится в сообщении полностью. Интересно то, что если номер дома по этой улице состоит из одной цифры, то в балуне адрес выводится правильно. Также если пощелкать по другим улицам, то адреса тоже выводятся полностью. Может, где-то и есть такой же глюк, но я еще таких улиц назвать не могу, где бы мне такое встречалось. Улица что ли такая заколдованная?

Тоже происходит и при добавлении адрема через форму.

Я пробовал менять maxWidth и maxHeight в baloonOptions - видно, что эти опции действуют для "длинных" адресов. Но для Балтийской ничего не поменялось.

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

6 комментариев
API 1.x
как обратиться к AnyMetadata ?
wow.goldss
1 февраля 2012, 21:34

данные берутся из XML файла, если с полем name можно работать так:

YMaps.Events.observe(ml_1, ml_5.Events.Load, function () {
obj1 = this.filter(function (obj1) {
  return (obj1.name >= min)
}) 

то как можно работать допустим с "metaDataProperty.AnyMetadata.number", вот так не работает:

  YMaps.Events.observe(ml_1, ml_5.Events.Load, function () {
obj1 = this.filter(function (obj1) {
  return (obj1.metaDataProperty.AnyMetadata.number >= min)
}) 
1 комментарий
API 1.x
Локатор и Киевстар в подземке...
akirich
2 февраля 2012, 00:39

Возможно немного не в тему, но клуба Локатора на я.ру нет.

На API Яндекс.Карт и Яндекс.Локатора пишу научную работу, и при навигации только по GSM в метро вылетают баги в определении местоположения.

Карта с "безобразием": http://akirichweb.narod.ru/map.html

Идентификаторы базовых станций по всей линии проверялись неоднократно.

Запрашиваем местоположения, как и указано в документации:

Запрос

POST /geolocation HTTP/1.1
Host: api.lbs.yandex.net
Accept-Encoding: identity
Content-length: 742
Content-type: application/x-www-form-urlencoded
json={ "common": { "version": "1.0",
"api_key": "AAwkGkwBAAAA9muWLAMAKp9XjTBZtmOLeiBQJqHX6YEqNdUAAAAAAAAAAAAoEP1ZsBlcVFA_OpP55MK3Ek1r8A==" },
"gsm_cells"
: [ { "countrycode": 255, "operatorid": 03, "cellid": 3062, "lac": 57173, } ], }
Ответ:

{
  "position": {
    "latitude": 50.0508003,
    "longitude": 36.2069016,
    "altitude": 0.0,
    "precision": 200,
    "altitude_precision": 30.0,
    "type": "gsm"
  }
}
Хотя реальное местоположение можно подтвердить соседними точками не в метро (максимум 50 метров расстояния)

...

"countrycode": 255, "operatorid": 03, "cellid": 8112, "lac": 57001,

...

{
  "position": {
    "latitude": 50.0232086,
    "longitude": 36.3369255,
    "altitude": 0.0,
    "precision": 513.32074,
    "altitude_precision": 30.0,
    "type": "gsm"
  }
}


...

"countrycode": 255, "operatorid": 03, "cellid": 7451, "lac": 57001,

...

{
  "position": {
    "latitude": 50.025898,
    "longitude": 36.3324356,
    "altitude": 0.0,
    "precision": 673.701538,
    "altitude_precision": 30.0,
    "type": "gsm"
  }
}

Таких базовых станций на линии большинство. Как можно уточнить данные с них и улучшить работу локатора? GPS под землей не работает.

И можно ли передавать данные c GPS в теле запроса вместе с идентификаторами базовых станций (lac, cellid, countrycode, operatorid) на земле?
3 комментария
API 1.x
Фотографии на картах
Дмитрий
2 февраля 2012, 10:42

Добрый день, подскажите или дайте ссылку на доки где описывается как размещать вместо меток (placemark) фотографии.

 

Или как кастомизировать плейсмарки чтобы на них отображались миниатюры фотографий.

 

Спасибо. 

3 комментария
API 1.x
YmapsML в массив меток
wow.goldss
2 февраля 2012, 11:39

как можно преобразовать YmapsML файл в массив меток?

есть вариант преобразовать фильтром, но так запрос долго обрабатывается и не очень красиво:

ml_1=new YMaps.YMapsML('http://rentony.ru/add/rent_1.php
YMaps.Events.observe(ml_1, ml_1.Events.Load, function () {
obj1 = this.filter(function (obj1) {
return (obj1.name >= 1)
})
}) 

есть ли еще возможности преобразовать в массив  YmapsML файл? 

5 комментариев
API 1.x
Загркзка координат центра из input type="text"
WOLFphantom
2 февраля 2012, 12:14

Пожалуйста кто нибудь помогите реализовать задуманое:

 

Есть некий <input type="text" name="koordinaty" /> и на этой же странице есть Карта.

Так вот, как сделать чтобы (при загрузке страницы) координаты центра брались из этой строки для ввода текста (из значения value="") если строка не пустая, а ести строка пустая подставлялось значение поумолчанию.

7 комментариев
API 1.x
Задание стиля точек маршрутизатора
dsorochinskiy
2 февраля 2012, 22:44

Нужно задать иконку для начальной и конечной точки маршрута, построенного через YMaps.RouterEditor.DragAndDropEditor

 

Маршрутизатор задаю как в примере http://api.yandex.ru/maps/jsapi/examples/router_editor_result.html

 

подскажите в каком событии какой объект словить для задания своего стиля иконки

5 комментариев
маршрутизация,события,балун
Как получить объекты Яндекс.Карт по названию(типу), например &quot;Детские сады&quot;
Ябадубаду
3 февраля 2012, 15:41

Добрый день,

 

искал, искал, не нашел. Может не правильно ищу, помогите, пожалуйста.

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

Например, хочу отобразить на карте детские сады рядом с домом, по какому-то адресу.

Как работать с объеками, которые я сам добавил - понятно. Нужно добраться имеено до объектов, о которых знает яндекс и которые показываются в поиске в яндекс.картах по запросу, например: "Детские сады Отрадное".

Яндекс.апи позволяет это сделать? Если да, подскажите где почитать?

Очень спасибо.

6 комментариев
API 1.x
Не отображается карта (wordpress), помогите разобраться.
JohnnyBravo
4 февраля 2012, 10:54

http://pcs-nv.ru/%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B

в файл functions.php вставил remove_filter('the_content', 'wpautop');

на старницу Контакты вставил полученый код.

<script src="http://api-maps.yandex.ru/1.1/?key=AEYb604BAAAAxZ1wTAIAAdWBhcqmvIkTXuEdZVSGkQuWXKsAAAAAAAAAAACdXw16Y6pCgjTRx6Szpp1UbwggnQ==&modules=pmap&wizard=constructor" type="text/javascript"></script>

<script type="text/javascript">

    YMaps.jQuery(window).load(function () {

        var map = new YMaps.Map(YMaps.jQuery("#YMapsID-5055")[0]

        map.setCenter(new YMaps.GeoPoint(76.513759,60.920113), 15, YMaps.MapType.PMAP);

        map.addControl(new YMaps.Zoom()

        map.addControl(new YMaps.ToolBar()

        YMaps.MapType.PMAP.getName = function () { return "Народная"; };

        map.addControl(new YMaps.TypeControl([

            YMaps.MapType.MAP,

            YMaps.MapType.SATELLITE,

            YMaps.MapType.HYBRID,

            YMaps.MapType.PMAP

        ], [0, 1, 2, 3])

 

        YMaps.Styles.add("constructor#pmlbmPlacemark", {

            iconStyle : {

                href : "http://api-maps.yandex.ru/i/0.3/placemarks/pmlbm.png",

                size : new YMaps.Point(28,29),

                offset: new YMaps.Point(-8,-27)

            }

        }

 

       map.addOverlay(createObject("Placemark", new YMaps.GeoPoint(76.515904,60.918693), "constructor#pmlbmPlacemark", "ПринтКомСервис")

        

        function createObject (type, point, style, description) {

            var allowObjects = ["Placemark", "Polyline", "Polygon"],

                index = YMaps.jQuery.inArray( type, allowObjects),

                constructor = allowObjects[(index == -1) ? 0 : index];

                description = description || "";

            

            var object = new YMaps[constructor](point, {style: style, hasBalloon : !!description}

            object.description = description;

            

            return object;

        }

    }

</script>

 

<div id="YMapsID-5055" style="width:450px;height:350px"></div>

<div style="width:450px;text-align:right;font-family:Arial"><a href="http://n.maps.yandex.ru/" style="color:#1A3DC1">Создано с помощью сервиса Яндекса Народная карта.</a></div>

3 комментария
API 1.x
геокодирование - адреса из базы данных
natasha.shtokalenko
4 февраля 2012, 11:30

Я в javascript совсем не разбираюсь (только начала учить), поэтому заранее прошу прощения.

Есть переменная, полученная из БД в формате = город,улица, дом.

Есть код API Яндекс.Карт

var map, geoResult, value;

// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]

// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(40.927092,57.772428), 10);

// Добавление элементов управления
map.addControl(new YMaps.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()
}else {
alert("Ничего не найдено")
}
}

// Процесс геокодирования завершен неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
alert("Произошла ошибка: " + error);
})
}

Как сделать так, чтобы скрипт брал данные из базы данных. Нашла кучу информации как выводить информацию, если массив писать в скрипте, а через запрос к БД нет. Или подскажите где взять информацию.

7 комментариев
API 1.x
Как лучше всего определить блжайшую точку из набора точек?
yMAPStest
5 февраля 2012, 17:58

Дано: выбранная точка и массив точек

Требуется: найти ближайшую точку к выбранной точке (например, маршрут был построен по массиву точек, а при наведении на часть маршрута надо показать координаты ближайшей точки, по которой он строился).

 

Делаю так:

1. Нахожу расстояние по формуле sqrt(deltaX^2 + deltaY^2)

2. Если текущее расстояние больше вновь вычисленного, то сохраняю вновь вычисленное.

3. И так по всему списку, либо пока не будет расстояние равно 0.0

 

 

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

1 комментарий
API 1.x
Вывод множества меток. Есть ли ограничения?
yMAPStest
5 февраля 2012, 18:00

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

При их выводе на карте появляется только некоторая часть. Отсюда вопрос, если ли какие-то ограничения по выводу? - количество, близость расположения?

 

Спасибо.

 

2 комментария
API 1.x
Ближайшие станции метро php
smailuk88
6 февраля 2012, 02:14

Можно ли узнавать ближайшие станции метро по координатам на php?

Проблема такая. На сайте надо каждый день узнавать метро по 100 разным точкам.Конечно же лучше это делать через Cron, но тогда через javascript(ajax)  не получаеться записывать в бд.

Или подскажите другой метод как можно это осуществить? 

3 комментария
API 1.x
ответ в Json Opera и IE
mikeles87
6 февраля 2012, 03:41

Приходит неправильные ответ в этих браузерах. В других работает.

Кто, что подскажет?

Update: Нашел причину. Все дело что вызов идет на домен 3 уровня. Вроде как opera из-за безопасности как-то по-другому работает с фреймами и субдоменами. 

Update: Нашел решение http://clubs.ya.ru/mapsapi/replies.xml?item_no=15302

2 комментария
API 1.x
На карте балун не закрывается и метка не добавляется
beznasmorka
7 февраля 2012, 14:53

Всем привет! Есть такая проблема. Хочу вставить на сайт карту с возможностью добавления меток пользователями, причем по категориям (бары, парки, больницы и т.д.). Всё сделал нормально, кроме одного - после вписания данных в балун и нажатия на кнопку "Добавить", балун не закрывается и метка не добавляется. Какие есть варианты проблемы и пути её решения? Пока тестирую на локальной машине. Не знаю, возможно, на сайте добавятся новые проблемы, но пока застрял на этом...

Задавал вопрос в другой ветке, там мне посоветовали:

- поискать ответ самому - к сожалению, безуспешно

- создать новую тему - что я и делаю

Изначально, делал карту по следующим инструкциям:

1.http://webmap-blog.ru/yandex-maps/yandeks-karta-na-vashem-sajte-s-vozmozhnostyu-dobavleniya-metok-polzovatelyami-novaya-versiya/comment-page-1#comment-8933

2.http://webmap-blog.ru/yandex-maps/yandeks-karta-na-vashem-sajte-s-vozmozhnostyu-dobavleniya-metok-polzovatelyami-i-vyvod-po-kategoriyam/comment-page-1#comment-8934

Делал всё пошагово, очень внимательно, но проблема не решена. Примечательно то, что у многих такая же проблема, но автор указывает только одну возможную причину: неправильно прописаны пути к файлам. У меня они прописаны правильно. Если у многих такая же проблема, значит это проблема общая, а не частная. Прошу знающих людей подсказать как её можно решить.

17 комментариев
метка,API 1.x,балун
Не подхватываются координаты маркером
alexey.nonamer
7 февраля 2012, 15:36

Задача: определить координаты адреса и потсавить туда перетаскиваемую метку.

Что я делаю:

 

geoResult = this.get(0);

map.panTo(this.get(0).getGeoPoint()

var placemark = new YMaps.Placemark(new YMaps.GeoPoint(this.get(0).getGeoPoint()), {draggable: true}

placemark.name = "Имя метки";

placemark.description = "Описание метки";

map.addOverlay(placemark);

 

Однако же, координаты найденого места (this.get(0).getGeoPoint()) не вставляются в маркер - он создается под Африкой, хотя искал Псков... Если результат this.get(0).getGeoPoint() вывести в сообщении, то видно, что координаты правильные.

Раньше без проблем создавал маркеры, а тут засада...

2 комментария
API 1.x