Клуб API Карт

январь 2012
Защита от копирования Яндек Карты
nilbug
2 января 2012, 15:20

Существует ли защита, чтобы посторонний человек в наглую не смог все координаты точек скопировать просто посмотрев HTML страницы?

2 комментария
API 1.x
Странное поведение карт
powerdigital
2 января 2012, 17:18

Доброго времени суток всем жителям клуба! Рад к Вам присоединиться!

 

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

Но интересен сам факт, что карта нормально загружается, если просто нажать на "Анализировать код элемента" и до следующей перезагрузки корректно работает. Для наглядности прикладываю видео:

 

Вобпрос больше на любопытство, так как не могу увязать эти 2 факта))

У кого какие мысли?

 

upd: первоначальное предположение насчет стилей оказалось неверно, исправление стилей ничего не дало.

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

Но вот тут столкнулся с проблемой, пытался сделать по этой инструкции

http://api.yandex.ru/maps/articles/tasks/map.xml#how-to-load-map-in-hidden-div

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

подозреваю что проблема с событием window.onLoad, но не совсем понимаю куда его нужно поставить

 вот код скрипта, который я использую, специально попробовал все максимально привести к виду кода в примере:

<script type="text/javascript">
   
   YMaps.jQuery(function () {
var container = YMaps.jQuery("#YMapsID-163"),
        map = new YMaps.Map(container[0]
map.setCenter(new YMaps.GeoPoint(34.090245,44.962084), 11, YMaps.MapType.MAP);
   
//YMaps.jQuery(window).load(function () {
//   var map = new YMaps.Map(YMaps.jQuery("#YMapsID-163")[0]
//   map.setCenter(new YMaps.GeoPoint(34.090245,44.962084), 11, YMaps.MapType.MAP);
YMaps.jQuery("#change-map-visibility").bind('click', function () {
container.css('display', (container.css('display') == 'none') ? '' : 'none');
map.redraw( // Перерисовывает карту
return false;
}
        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])
        
        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>

 где здесь нужно ставить window.onLoad? Если делаю по аналогии с оригиналом (тут же в коде под комментариями), то карта вообще неотображается.

<ul>
<li><a href=\"#tabs-1\">Фото объекта</a></li>
<li><a href=\"#tabs-2\" id=\"change-map-visibility\">Объект на карте</a></li>
</ul>

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

4 комментария
API 1.x
Геотаргетинг средствами API Яндекс.Карт
Andrew Russkin
5 января 2012, 00:36

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

Есть желание поставить САБЖ на сайт, чтобы при открытии главной страницы учитывался регион проживания гостя.

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

Проблема в том, что скрипт из примера исполняется уже после отрисовки страницы.

можно конечно решить вопрос ajax запросами  после получения YMaps.location, но нет ли возможности напрямую из скрипта, до рендеринга шаблона, получить информацию о местонахождении посетителя? 

1 комментарий
геолокация
Печать карты
to0n1
5 января 2012, 01:02

Всем привет! Использую js api yandex maps (народная карта <script type="text/javascript" src="http://api-maps.yandex.ru/1.1/index.xml?key=own_key&modules=pmap"></script>) . Возникла задача отправлять карту на печать. Сайт построен на Zend Framework, для страницы которую буду отдавать на  печать создал отдельный конроллер и экшен (впринципе не по теме но вдруг поможет в решении). При рендеринге шаблона выводится <div id="map"></div>  Использую jquery 1.4.2 на событие document.ready навешиваю обс который и создает карту дальше аяксом получаю json данные о маркерах (placemark) и вывожу их. В конце отправляю страницу на печать window.print() Все выводится нормально только у маркеров пропадает фон ... использовать статичиский апи в моем случае не получится нет данных в нужном маштабе...  

 

Буду очень благодарен хоть за малейшую подсказку ! Если нужен код могу приложить! Спасибо ! 

6 комментариев
печать карты,метка
Кластеризация меток (XML)
wow.goldss
5 января 2012, 12:57

как можно сделать такую кластеризацию, но только с XML

http://webmap-blog.ru/yandex-maps/klasterizaciya-metok-na-yandeks-kartax-–-dva-resheniya

 

у меня метки находятся в базе данных, от туда с помощью php генерируются XML файлы, каждый файл - группа меток

вот сайт если что http://rentony.ru/ 

4 комментария
API 1.x
Запакованные многоугольники, Chrome, отображаются рандомом
konstantikirillov
5 января 2012, 23:13

Есть такой вопрос в FAQ про IE6, но почти тоже самое наблюдаю на Хроме 17.0.963.12 dev. Не очень сложный многоугольник (https://gist.github.com/1566708) то отображается нормально (с заливкой), то получается незамкнутым и одна из сторон начинается где-то в Норвегии, то вообще падает с DOM Exception: 5. А ведь это всего-то маленькая Чехия.

Может в документации не указаны  какие-то особенности?

Нет комментариев
полигон,ломаная,поиск ошибок
Как сделать карту на которой можно указывать точку и значения передавать в INPUT
webmaster-savmp
6 января 2012, 01:40

Как сделать карту на которой можно указывать точку и значения передавать в INPUT

Как сделать?

Есть карта и два INPUT поля для ввода

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

9 комментариев
API 1.x
как запустить функцию после загрузки всех оверлеев? (XML)
wow.goldss
6 января 2012, 14:46

еще один вопросик)

есть такой код для загрузки меток из XML:

ml_1 = new YMaps.YMapsML('http://rentony.ru/add/room_1.php'
ml_2 = new YMaps.YMapsML('http://rentony.ru/templates/ja_purity/ml_2.xml'
ml_3 = new YMaps.YMapsML('http://rentony.ru/templates/ja_purity/ml_3.xml'
ml_4 = new YMaps.YMapsML('http://rentony.ru/templates/ja_purity/ml_4.xml'
ml_5 = new YMaps.YMapsML('http://rentony.ru/templates/ja_purity/ml_5.xml'
map.addOverlay(ml_1);
map.addOverlay(ml_2);
map.addOverlay(ml_3);
map.addOverlay(ml_4); 

П.С. - в функции присутствует вот такая строчка "map.removeAllOverlays();"

как запустить функцию после загрузки всего этого? window.onload - не канает, с кнопки запускается, а в коде нет, в FireBug пишет что не удается удалить оверлеи, т.к. их просто пока еще нет...

10 комментариев
API 1.x
Кто поможет исправить код ?
ser.anapa
6 января 2012, 15:16

 Пример здесь  http://api.yandex.ru/maps/jsapi/examples/mapgroupmenu.html  мне нужно при нажатии на Известные памятники или другое слово  карта приближалась ! 

4 комментария
API 1.x
Как на сайте полученный маршрут распечатать?
ANVictor2008
6 января 2012, 19:04

Добрый день! Делаю функционал проезда от адреса клиента к адресу продавца, марщрут нахожу с помощью вашего API а вот печатать не получается, то метки не печатались в Хроме и Мазиле, эту проблему я решил, но теперь в опере не пропечатывается линия маршрута, как вариант передать маршрут на статическую карту, но что-то описания я не нашел, помогите, кто знает как решить проблему, заранее спасибо!  Если поможет функция вывода на карту выглядит так:

 

<!--Функция определения мапршрута и вывода на карту-->
<script type="text/javascript">
window.onload = function () {
var map = new YMaps.Map(document.getElementById("YMapsID")
points = [<?echo $lnglat_start?>, <?echo $lnglat_stop?>];
// Создаем область показа по группе точек
bounds = new YMaps.GeoCollectionBounds(points);
// Применяем область показа к карте
map.setBounds(bounds);
var router = new YMaps.Router([<? echo $lnglat_start?>, <? echo $lnglat_stop?>],[],
{ viewAutoApply: true }) ; // Строим маршрут от адреса

style_route = new YMaps.Style( // Стиль для меток и линий маршрутизатора
style_route.lineStyle = new YMaps.LineStyle( // Задаем стиль линии
style_route.lineStyle.strokeWidth = 5; // Ширина линии
style_route.lineStyle.strokeColor = '000000ff'; // Цвет линии в формате RGBA
map.addOverlay(router) ;
map.enableScrollZoom(
router.setStyle(style_route); // Применяем стиль к маршруту

// По событию успешного построения маршрута зададим подписи точкам маршрута
YMaps.Events.observe(router, router.Events.Success, function () {
// Задаем содержание меток для начальной и конечной точек.
   // Создает стиль начала маршрута
var s = new YMaps.Style(

// Создает стиль значка метки
s.iconStyle = new YMaps.IconStyle(
s.iconStyle.href = "pm2al.png";
s.iconStyle.offset = new YMaps.Point(-9, -27);

  // Создает стиль конца маршрута
var s2 = new YMaps.Style(

// Создает стиль значка метки
s2.iconStyle = new YMaps.IconStyle(
s2.iconStyle.href = "pm2bl.png";
//s2.iconStyle.size = new YMaps.Point(20, 29);
s2.iconStyle.offset = new YMaps.Point(-9, -25);
router.getWayPoint(0).setOptions({style: s}
router.getWayPoint(1).setOptions({style: s2}
//alert(router.getPoint(0)
var route = router.getRoute(0);
var itineraryList = ["<p style='font:12px arial,sans-serif;'>A) <? echo $_POST['otkuda']?><br />"];
var action = [];
action["back"] = "Назад";
action["left"] = "Налево";
action["right"] = "Направо";
action["none"] = "Прямо";
action["slight right"] = "Правее";
action["slight left"] = "Левее";

for (var i=0; i < route.getNumRouteSegments( i++) {
var segment = route.getRouteSegment(i);
distance = Math.ceil(segment.getDistance()
if (distance > 1000)
{
d_temp_km = (distance/1000).toPrecision(2);
distance = d_temp_km + " км.";
}
else
distance = distance + " м.";
if (segment.getStreet()!="")
itineraryList.push((i+1)+") "+action[segment.getAction()] + ", " + segment.getStreet() + ", " + distance + "<br />");
else
itineraryList.push((i+1)+") "+action[segment.getAction()] + ", " + distance+ "<br />");
}

itineraryList.push("Б) <? echo $address?></p>");
document.getElementById("list").innerHTML = itineraryList.join("\n");
}

}
</script> 

Нет комментариев
API 1.x
Корректное определение координат для дальнейшей обработки в формах.
minka9292
7 января 2012, 03:05

Здравствуйте, С Уже Наступившим Новым Годом,

Подскажите как можно извлечь координаты при клике на карту и как дальше воспользоваться этими данными для дальнейшей обработки в php. Если проще, то мне нужно отправить запрос в базу данных с данными о координатах каторые выбрал пользователь на карте. Поможет ли в этом getGeoPoint()?

Заранее Спасибо.

4 комментария
API 1.x
загрузка YMapsML
weak
8 января 2012, 12:18

Как я вижу все запросы на YMapsML грузится через яндекс-сервер api-maps.yandex.ru, то есть XML-файл с разметкой каждого посетителя грузится через ваш сервер. Если на сайте будет очень много посетителей, как фильтровать запросы вашего сервера?

 

В обычной ситуации хостер воспримет тысячи соединений с одного IP-адреса (хотя их для вашего хоста 4) опасной ситуацией и может блокировать. Даже поведение NGINX есть по такому случаю - ограничение соединений с одного IP.

Существует ли способ грузить данные напрямую с каждого посетителя? При этом доступно будет anycast-маршрутизация и балансировать можно даже такой простой технологией.

 

 

5 комментариев
API 1.x
banko-map.ru - откуда берет данные?
iproger
8 января 2012, 15:11

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

Нашел сайт banko-map.ru, скажите, пожалуйста, откуда он берет данные адресов банкомата? Забивает их сам или же как то берет из БД яндекса сразу с картой?

Очень интересен этот момент.

 

1 комментарий
API 1.x
как получить координаты вершин нарисованного на карте многоугольника?
kkv
9 января 2012, 05:38

как получить координаты вершин нарисованного на карте многоугольника?

например этого...

http://maps.yandex.ru/?um=Sim3c_A3G2_ecJimBJgoMgGEAiTWxuog&l=map

 

нашёл.... http://webmap-blog.ru/yandex-maps/api-yandeks-kart-%E2%80%93-risuem-poliliniyu-i-soxranyaem-ee-v-baze-dannyx-mysql

 

5 комментариев
API 1.x
некорректное отображение в IE
lucky-m40
9 января 2012, 18:26

Моя карта : http://www.mirbezgraniz.ru/map/1111.html

не корректно отображается в интернет эксплолере, а остальных браузерах всё отлично!!!

 

подскажите подайлуста, что сделать?

 

3 комментария
API 1.x
Английский вариант
GeyParry
9 января 2012, 20:45

Чет не могу найти как сменить язык на английский? Или данной фичи нет в картах? 

З.Ы. Для иностранцев делаем(

5 комментариев
API 1.x
не работает поиск по карте
uralangler
10 января 2012, 03:44

Надпись "Идет запрос к серверу..." и ничего не происходит.

4 комментария
API 1.x
Помогите, пожалуйста. API
maps-2up
10 января 2012, 11:55

Помогите, пожалуйста.

Надо сделать похожее на это - http://fondtol.org/index.php?a=show&idlink=230

Сделал Сам такое - http://maps.yandex.ru/?um=dX8FA6HjptNMA8Cr3VHDQ2X4mn7EZcL7&ll=30.232069,50.549251&spn=0.176125,0.061577&z=13&l=map
Но мне надо это вставить на сайт. А код сгенерировать не получается

Нашел на сайте Яндекса. Вот что мне надо - http://api.yandex.ru/maps/solutions/?p=portal#
Пункт: Рассказывайте о событиях

Вопрос:
1. можно ли использовать мою наработку ? http://maps.yandex.ru/?um=dX8FA6HjptNMA8Cr3VHDQ2X4mn7EZcL7&ll=30.232069,50.549251&spn=0.176125,0.061577&z=13&l=map     ----- как получить код для сайта ???
2. Где этот конструктор? : http://api.yandex.ru/maps/solutions/?p=portal# - Рассказывайте о событиях ?
  2.1. как получить код? ручками писать ?

3 комментария
API 1.x
конфликт яндекс api с другими скриптом
martin.rover
10 января 2012, 12:12

помогите решить проблему.

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

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


<script language="JavaScript1.2">

<!--
//Secify scroller contents
var line=new Array()
line[1]="Актуальная техническая информация"

//--Don't edit below this line

var longestmessage=1
for (i=2;i<line.length;i++){
if (line[i].length>line[longestmessage].length)
longestmessage=i
}

//Auto set scroller width
var tscroller_width=line[longestmessage].length

lines=line.length-1 //--Number of lines

//if IE 4+ or NS6
if (document.all||document.getElementById){
document.write('<form name="bannerform" class="bannerform">')
document.write('<a href="support"><input type="text" name="banner" size="'+tscroller_width+'"')
document.write(' style="onfocus="blur()"></a>')
document.write('</form>')
}

temp=""
nextchar=-1;
nextline=1;
cursor="_"
function animate(){
if (temp==line[nextline] & temp.length==line[nextline].length & nextline!=lines){
nextline++;
nextchar=-1;
document.bannerform.banner.value=temp;
temp="";
setTimeout("nextstep()",3000)}
else if (nextline==lines & temp==line[nextline] & temp.length==line[nextline].length){
nextline=1;
nextchar=-1;
document.bannerform.banner.value=temp;
temp="";
setTimeout("nextstep()",3000)}
else{
nextstep()}}

function nextstep(){

if (cursor=="\\"){
cursor="|"}
else if (cursor=="|"){
cursor="/"}
else if (cursor=="/"){
cursor="-"}
else if (cursor=="-"){
cursor="\\"}


nextchar++;
temp+=line[nextline].charAt(nextchar);
document.bannerform.banner.value=temp+cursor
setTimeout("animate()",25)}


if (document.all||document.getElementById)
window.onload=animate

</script>

2 комментария
API 1.x
Обновление оверлеев
dejurin
10 января 2012, 16:46

Подскажите как реализовать такую задачу:

есть база xml с метками

 

var ml = new YMaps.YMapsML("http://site.ru/base1.xml) ;

map.addOverlay(ml);

 

но к примеру при нажатии на кнопку button менять url и соответственно, чтобы обновлялись метки исходя из xml

например: 

 

$("#button").click(function(){

// обновить на var ml = new YMaps.YMapsML("http://site.ru/base2.xml) ;

 

}) ;

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