Клуб API Карт

Ссылка на место на Яндекс.карте с других сайтов?

virts.ru
25 сентября 2009, 14:25

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



на примере моего сайта: www.virts.ru, сайт с виртуальными панорамами.

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

Потом при нажатии на нее пользователь может посмотреть панораму заведения...

9 комментариев
Подписаться на комментарии к посту
Можно, например, задать координаты объекта get-параметром, а потом обращаясь к странице с картой обрабатывать get-параметры (это можно делать как на серверной стороне, так и на стороне javascript).

Пример обработки get-параметра с помощью javascript можно посмотреть здесь:
http://rodlex.narod.ru/examples/set-coords-from-get-request.html?coord=35,55
Можно  поподробнее, я со скриптами не дружу, все медленно дается:

1. Нужно вставить код:

    <script type="text/javascript">
window.onload = function init () {
var map = new YMaps.Map(document.getElementById("YMapsID")),
getRequest = document.location.search,
point = new YMaps.GeoPoint(37.64, 55.76);

if (!!getRequest) {
point = YMaps.GeoPoint.fromString((getRequest.substr(1)).split('&')[0].split('=')[1]);
map.addOverlay(new YMaps.Placemark(point), {hasBalloon: false});
}
map.setCenter(point, 5);
}

script>
в страницу с картой.

2.  Поставить ссылку

http://rodlex.narod.ru/examples/set-coords-from-get-request.html?coord=35,55

в моем случае:

http://virts.ru/examples/set-coords-from-get-request.html?coord=52,82

И должно сработать?
 что то не выходит...

По ссылке http://virts.ru/examples/set-coords-from-get-request.html?coord=52,82 выдается ошибка "Not found".
Сейчас у меня такой код:

  window.onload = function () {
            var map = new YMaps.Map(document.getElementById("YMapsID"));
         //   map.setCenter(new YMaps.GeoPoint(82.915201,55.02950), 15);
         
         getRequest = document.location.search,
                point = new YMaps.GeoPoint(82.915201,55.02950);

            if (!!getRequest) {
                point = YMaps.GeoPoint.fromString((getRequest.substr(1)).split('&')[0].split('=')[1]);
                map.addOverlay(new YMaps.Placemark(point), {hasBalloon: false});
            }
            map.setCenter(point, 15);
........

Делаю ссылку и запускаю ее:

http://virts.ru/set-coords-from-get-request.html?coord=82.910243,55.043154

У меня ошибка...
Сработало, так конечно:
http://virts.ru/index.htm?coord=82.910243,55.043154

Но , он ведь мне новый маркер поставил на эту координату, 
а у меня есть уже маркер с картинкой, нужно чтобы он показался!, Это вот как?
Вот так у меня прописаны маркеры:

     var placemark5 = new YMaps.Placemark(new YMaps.GeoPoint(82.919945,55.028553), {style: "example#customPoint"} );
            placemark5.setBalloonContent('');
            map.addOverlay(placemark5);
Передавайте не координаты, а, например, номер метки. По номеру выбирайте из массива или из группы. Соответственно, открывайте балун у выбранной метки.
как будет тогда ссылка:

так http://virts.ru/index.htm?placemark=3   ???
Да, она может быть и такой.

Логика скрипта может быть примерно такой (думаю, что по комментариям суть будет понятна):

// Строка с GET-параметрами
var getRequest = document.location.search,

    // Группа, в которой хранятся объекты
    group = new YMaps.GeoObjectCollection();
   
// Добавление объектов в группу
var placemark = new YMaps.Placemark(map.getCenter());
placemark.id = 1;

group.add(placemark);

// Добавление группы на карту
map.addOverlay(group);

if (getRequest) {
    // Считаем, что первый параметр означает id объекта
    var id = (getRequest.substr(1)).split('&')[0].split('=')[1],
        // Пытаемся найти объект с переданным id
        filterObj = group.filter(function (obj) {
            return obj.id == id;
        });
   
    // Если результат поиска удачный, то
    // у первого результата поиска открываем балун
    if (filterObj.length) {
        filterObj[0].openBalloon();
    }
}