Клуб API Карт

апрель 2013
Экспликация - как лучше реализовать
company.stlanik
1 апреля 2013, 15:02

Добрый день!

 

Есть карта, на которой изображен некий географический объект (заповедник), прорисованы границы, стоянки, дома отдыха и т.д.

Все эти объекты необходимо скрывать и показывать по нажатию на ссылки около карты (экспликация). Как это лучше всего реализовать?

Притом: все объекты типа точка запихануты в один массив для того, чтобы была кластеризация.

3 комментария
меню,метка,API 2.0,фильтрация
KML на картах Яндекса
yolasite
1 апреля 2013, 16:04

здравствуйте!

подключил яндекс карты на один из своих сайтов, начал изучать api

сама карта работает. но пытаюсь наложить на нее kml-файл, все безрезультатно.

 

ymaps.ready(init);

var myMap;


function init() {

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

        center: [56.632, 47.886],

        zoom: 11,

        behaviors: ["default", "scrollZoom"]

    });


    myMap.behaviors.enable("ruler");


    myMap.controls

        .add('smallZoomControl', {

        left: 5,

        bottom: 25

    })

    var ml = new YMaps.YMapsML("http://тут ссылка на файл.kml");

    map.addOverlay(ml);

};

 

4 комментария
KML,API 2.0,geoXml
Изменять цвет текста в названии иконки (балуна) - РЕШЕНО
lex2002s
1 апреля 2013, 17:21

Добрый день!

Есть необходимость передавать цвет в название иконки (балуна), т.е. динамически раскрашивать надпись. Текущйи вариант можно увидеть здесь: http://powercomps.ru/yamaps/viv-map.html

Сейчас все надписи красного цвета, а надо в зависимости от значения в таблице БД присваивать каждой точке свой цвет (поле с кодом цвета находится в той же БД, откуда подгружаются данные в YmapsML файл).

Вот код, отвечающий за формирование XML файла:

 

 

<?php

 

header("Content-type: text/xml");

include("bd.php");

 

echo '<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd">

 

<Representation xmlns="http://maps.yandex.ru/representation/1.x">

 

<Style gml:id="objectsStyle">

<iconContentStyle>

<template>#iconTemplate</template>

</iconContentStyle>

 

<balloonContentStyle>

<template>#BalloonStyleTemplate</template>

</balloonContentStyle>

</Style>

 

<Template gml:id="iconTemplate">

<text><![CDATA[<div style="font-size:12px;">

<div style="color:#ff0303;font-weight:bold">$[name]</div>

</div>]]></text>

</Template>

 

<Template gml:id="BalloonStyleTemplate">

<text><![CDATA[

<div style="font-size:12px;">

<div style="color:#ff0303;font-weight:bold">$[name]</div>

<div>Адрес: $[metaDataProperty.AnyMetaData.adres|не задан]</div>

<div>Телефон: $[metaDataProperty.AnyMetaData.telefon|не задан]</div>

<div>Поставщик: $[metaDataProperty.AnyMetaData.prov|не задан]</div>

<div>Комментарий: $[metaDataProperty.AnyMetaData.note|не задан]</div>

</div>]]></text>

</Template>

</Representation>

 

<GeoObjectCollection>

<gml:name>Объекты на карте</gml:name>

<gml:featureMembers>';

 

$query1= "SELECT * FROM maps";

$result1 = mysql_query($query1);

 

while ($par1 = mysql_fetch_array($result1))

{

echo '<GeoObject>';

echo '<gml:name>', htmlspecialchars($par1['name']), '</gml:name>';

echo '<gml:metaDataProperty>';

echo '<AnyMetaData>';

echo '<adres>', $par1['address'], '</adres>';

echo '<telefon>', $par1['phone'], '</telefon>';

echo '<prov>', $par1['provider'], '</prov>';

echo '<note>', $par1['note'], '</note>';

echo '</AnyMetaData>';

echo '</gml:metaDataProperty>';

echo '<gml:Point>';

echo '<gml:pos>', $par1['longitude'], ' ', $par1['latitude'], '</gml:pos>';

echo '</gml:Point>';

echo '</GeoObject>';

 

echo "\n";

}

echo '</gml:featureMembers>

<style>#objectsStyle</style>

</GeoObjectCollection>

 

</ymaps>';

 

?>

 

 

Я предполагаю, что надо как-то динамически формировать строку со стилем iconcontentstyle. Может кто помочь в решении данной проблемы?

9 комментариев
API 1.x,балун,YMapsML
Изменить общий серый фон при создании пользовательской карты?
alexandrbatalov
2 апреля 2013, 10:10

Здравствуйте!

Делаю пользовательскую карту (API 2.0) и получается, что она у меня слишком вытянутая по вертикали на минимальном масштабе и при открытии страницы больше половины зоны карты заполнено дефолтным серым фоном, который очень не вписывается в дизайн, можно ли как-то его изменить?

Нашел похожий вопрос для API 1.x (кажется, так и не решенный).

Можно ли как-то, не нарезая лишних тайлов, изменить хотя бы фоновый цвет?

4 комментария
API 2.0,серые тайлы
map.openBalloon()
Алексей Данилевский
2 апреля 2013, 12:51

Добрый день!

Сделал как написано здесь: http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/map.xml#openBalloon.

<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU"></script>

<script type="text/javascript">

    var map;

    ymaps.ready(function () {

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

            center: [61.788943, 34.368289],

            zoom: 17

        });

        map.openBalloon(new YMaps.GeoPoint(34.368289, 61.788943), "Бла-Бла");

    });

</script>

<div id="map" style="width: 500px;height: 300px"></div>

 

Карта появляется. В консоли ошибка: Uncaught TypeError: Object #<Object> has no method 'openBalloon'

В чем дело, почему у карты нет такого метода?

1 комментарий
API 2.0,балун
обработчик обновления пробок
serg.sikoev
2 апреля 2013, 13:24

Сразу признаюсь, что js не знаю. Только разбираюсь.

Мне нужно вывести карту с пробками.

И текст под ней:

1) время из контрола пробок (на какой момент они актуальны)

2) кол-во баллов из этого же контрола.

И чтобы это все обновлялось при обновлении пробок.

Тоесть по сути нужно сдалать обработку события обновления пробок.

 

пока пытаюсь после карты в столбец выводит время, когда пробки обновлялись.

 

В доках API не нашел как работает авообновление пробок.

Кроме этой ветки вообще по теме ничего не нашлось.

  

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU" type="text/javascript"></script>
   <script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
        ymaps.ready(init);
        var map;
var trafficControl;
        function init(){ 
map = new ymaps.Map ("map", {
center: [55.76, 37.64],
zoom: 10
}); 
trafficControl = new ymaps.control.TrafficControl({shown: true, expanded: false});
map.controls.add(trafficControl, {top: 30, left: 10});
trafficControl.getProvider('traffic#actual').update();
  }
var OldTimeStamp = null;
var NewTimeStamp;
var myTime;
var state;
        
// проверка 
function JamUpdateRoutine () {
 trafficControl.getProvider('traffic#actual').update();
 state = trafficControl.getProvider('traffic#actual').state;
                         NewTimeStamp = state.get('timestamp');
                         if (OldTimeStamp!=NewTimeStamp){
 OldTimeStamp = NewTimeStamp;
 myTime = new Date(NewTimeStamp*1000);
 $("#map").append(myTime.toLocaleTimeString()+"<br>");
                            }
                                     }
         </script>
</head>
<body>
    <div id="map" style="width: 800px; height: 600px"></div>
<script type="text/javascript">
         // Периодический опрос:
     window.setInterval(JamUpdateRoutine, 1000);
</script>
</body>
</html>

 

 

он работает, но trafficControl.getProvider('traffic#actual').state.get('timestamp'); иногда меняется непонятным образом. Получается что-то подобное:

13:12:00
13:16:00
13:12:00
13:16:00


иногда так:

13:12:00

13:12:10

13:12:00

И время после преобразования из timestamp отличается от того, что написано

в контроле пробок на 1 или 2 минуты (когда как, закономерности не понял).


Как это правильно сделать?

Может можно без опроса по таймеру обойтись?

имитировать движение мышки - тоже как-то коряво.



4 комментария
API 2.0,пробки
кластеризатор
koryto967
2 апреля 2013, 14:42

и два вопроса по нему.

 

1. Можно ли "задешево" заменить в кластеризаторе функцию, принимающую решение "кластеризовать сей маркер или нет". А то уж больно она эээ... упрощенная :( Переписывать весь кластеризатор не хочется.

 

2. Возможно ли получить на маркере событие "попал в кластер" (ну и "вышел из кластера" при нулевом флаге)

15 комментариев
кластеризатор,API 2.0
Вывод на карту массива polygon'ов
msiped
2 апреля 2013, 15:00

var polygon = new ymaps.Polygon(geometry, {

hintContent: json.markers[i].name

}, {

fillColor: '#6699ff',

// Делаем полигон прозрачным для событий карты.

interactivityModel: 'default#transparent',

strokeWidth: 1,

opacity: 0.5

});

myCollection.add(polygon);


Перебирая json массив пытаюсь добавить геообъекты в коллекцию, а потом вывести эту коллекцию, но ничего не получается, в мозилле пишет ошибку:
TypeError: myCollection is undefined


myCollection.add(polygon);
 
4 комментария
API 2.0,коллекции,полигон
Существуют ли ограничения в конструкторе карт на кол-во объектов?
alexandrbatalov
2 апреля 2013, 15:19

Хотим нанести на карту через конструктор карт около 200 объектов и выделить несколько трасс, в том числе МКАД. 

В связи с этим есть вопросы:

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

Спасибо!

8 комментариев
конструктор
Инфраструктура
Fry256
2 апреля 2013, 15:27

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

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

Суть в следующем:

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

 

Заранее спасибо!

2 комментария
API 2.0,геокодирование
2.0 переключен на 2.0.27
tekunova
2 апреля 2013, 15:48
2.0 переключен на 2.0.27

Мы переключили ссылку api-maps.yandex.ru/2.0 на версию API 2.0.27. Если вы хотите продолжить использование предыдущей версии, указывайте api-maps.yandex.ru/2.0.26.

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

Команда разработчиков API Яндекс.Карт.

Нет комментариев
обновление,API 2.0
Должны быть видны все метки
kissjunya
2 апреля 2013, 15:57

Как мне сделать, чтобы на карте были видны все метки, при размещении карты на своем сайте? У меня же метки видны только при нажатии несколько раз  "-"

6 комментариев
конструктор
автоматический скриншот: карты+пробки
serg.sikoev
2 апреля 2013, 17:45

Мне нужно по по событию обновления пробок получать картинку с картой/пробками.

Попробовал воспользоваться js библиотекой html2canvas.

 

 Есть ли в API инструмент, который склеивает все слои и конвертирует результат в картинку/canvas?

 

6 комментариев
Canvas,API 2.0,screenshot,пробки
Не изменяется ширина карты
arthur-pv
2 апреля 2013, 22:15

Страница: http://rentlist.ru/marker/card/test.php 

Некоторые пояснения по верстке: Контент делится на две колонки c шириной у каждой 50%.

Проблема: при сужении окна браузера карта сдвигается влево с фиксированной шириной. Хотя у всех дивов width: 100%;, то есть она должна тоже сужаться по ширине и быть резиновой. 

Подскажите, пожалуйста, в чем дело. Все перепробовал.

Спасибо.

 

1 комментарий
размер карты,API 2.0
Не правильно работает ymaps.ready
grishkashishka
2 апреля 2013, 23:32

насколько я понимаю - ф-я вызывается когда объект полностью построен. Но вот беда...в ишаке объект ymaps.Map не успевает построиться, а функция ymaps.ready уже срабатывает. Обертывал в document.ready та же ситуация. При этом хром все съедает без проблем. Поставил костыль setTimeout, но это не правильно.

Библиотечка

http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU 

20 комментариев
загрузка АПИ,API 2.0
Как получить список населенных пунктов на маршруте
kalibrov
3 апреля 2013, 01:35

Есть задача: пользователь вводит пунтк отправления и пункт назначения, на карте строится маршрут со всеми населенными пунктами через которые он проходит. Я с помощью ymaps.route прокладываю маршрут. Но не могу получить список населенных пунктов на нём. Пытался разбирать координаты каждого сегмента на маршруте, по ним с помощью ymaps.geocode искать населенный пункт, но информация получается непредсказуемая, т.к. координат сегментов могут проскакивать крупные населенные пункты, если небыло в нем никаких поворотов или других действий по которым маршрут делится на эти сегменты. Есть ли возможность как-то адекватно получить список населённых пунктов на маршруте?
 

 

            ymaps.route([fromCity, toCity], {
                mapStateAutoApply: true // автоматически позиционировать карту
            }).then(
                function (route) {
                myMap.geoObjects.add(route);

                        $.each(route.getPaths().get(0).getSegments(), function(index, segment) {
                            console.log(segment.getCoordinates()[0]);
                            var myGeocoder = ymaps.geocode(segment.getCoordinates()[0], {kind: "locality", results: 1});
                            myGeocoder.then(
                            function (res) {
                            var nearest = res.geoObjects.get(0);
                            var name = nearest.properties.get("name");
                            nearest.properties.set("iconContent", name);
                            nearest.options.set("preset", "twirl#redStretchyIcon");
                            myMap.geoObjects.add(res.geoObjects);
$(self).find("#segment").append("
"+name+"
");
                            },
                            function (err) {
                               alert("Ошибка");
                            }
                            );
                           
                        });
                },
                function (error) {
                    alert("Возникла ошибка: " + error.message);
                }
            );

 

4 комментария
маршрутизация,API 2.0,геокодирование
html и xml
Kazakoff-bal
3 апреля 2013, 10:16

Добрый день. 

Я создал на локальном компьютере два файла по html и xml как тут http://api.yandex.ru/maps/doc/ymapsml/1.x/guide/concepts/usage.xml при открытии html метки почемуто нету,

указываю xml который находиться на сервере яндекс сразу работает. хмм странно((

2 комментария
YMapsML
Конструктор яндекс карт
a22432
3 апреля 2013, 13:10

Можно ли сделать конструктор яндекс карт на подобе того какой он был раньше (только свой). Чтобы можно было находить на карте нужное место ставить метку, рисовать линии, писать текст в балуне, затем разместить его на своём сайте, чтобы люди могли создовать себе карту, брать созданный код и вставлять его у себя на сайтах?

А то может быть по условию пользовательского соглашения так нельзя делать.

4 комментария
API 2.0,пользовательское соглашение,конструктор
Геокодирование в API реализовано иначе чем на maps.yandex.ru?
clgs
3 апреля 2013, 13:45

А геокодер в API реализован иначе, геокодера на яндекс.картах?
Часто встречаю что геокодер апи возвращает ересь, а та-же самая поисковая строка в яндекс.карте адекватно.
Пример "Москва, ул. Нагатино-Садовники, д. 1, корп. 29а".

3 комментария
maps.yandex.ru,API 2.0,геокодирование
Увеличение кластера
msiped
3 апреля 2013, 14:20

Подскажите пожалуйста есть возможность изменить работу кластера, а именно уменьшить зум при клике на кластер, то есть чтобы объекты входящие в кластер при нажатии на кластер показывались не по краям окна а посередине?

1 комментарий
кластеризатор,API 2.0