Клуб API Карт

[РЕШЕНО] Ограничить область поиска API 2.0 (пример работы с маркером внутри)

ArchAL
22 августа 2012, 21:08

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

Уже не сплю вторую ночь, вынес себе мозг с документацией по API 2.0, ничего не понято...

Далее идёт рабочий код, может кому пригодится. Суть его в том, что он вносит в два текстовых поля координаты маркера, при этом у маркера свой стиль. Поиск по карте ограничен прямоугольной областью.

  

 

var map, geoPlacemark, searchControl;

ymaps.ready(function () {
    map = new ymaps.Map("YMapsID", {center: [92.87041199999997, 56.00871099999341], zoom: 11, type: "yandex#map"}) ; // Создаём карту.
    searchControl = new ymaps.control.SearchControl({boundedBy:[ [76.371694,50.019819],[111.948089,81.624253]], noPlacemark: true, strictBounds: true}) ; //ограничиваем область поиска
    map.behaviors.enable('scrollZoom') ; //Разрешаем масштабирование скролом
    map.controls.add(searchControl) ; //Добавляем поиск, обратите внимание, здесь нет кавычек и не ставьте их!!! я три часа потратил на поиск ошибки...
    map.controls.add("zoomControl").add("mapTools").add(new ymaps.control.TypeSelector(["yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap"])) ;  // Добавляем остальные элементы управления

    geoPlacemark = new ymaps.Placemark([92.87041199999997, 56.00871099999341], {}, {draggable: true, hasBalloon : false, iconImageHref: "http://krasmusor.net/images/red.png", iconImageSize: [30, 47], iconImageOffset: [-15, -47]}) ; // Создаём маркер со своим стилем
    map.geoObjects.add(geoPlacemark) ; // Добавляе на карту маркер.

//Обрабатываем событи на нажатие левой кнопки мыши по карте
    map.events.add('click', function (mycl) {
                var coords = mycl.get('coordPosition') ; //считываем координаты курсора
                geoPlacemark.geometry.setCoordinates([coords[0],coords[1]]) ; //Устанавливаем в них маркер
                document.getElementById('longitude').value = coords[0].toPrecision(6) ; //Вносим координаты в текстовое поле с id равным longitude (ШИРОТА)
                document.getElementById('latitude').value = coords[1].toPrecision(6) ; //Вносим координаты в текстовое поле с id равным latitude (ДОЛГОТА)

                if (searchControl.isExpanded) { //Проверяем открыты ли результаты поиска и если открыты то закрываем
                            searchControl.collapse()};
    }) ;

//Далее идёт аналогичная функция но реакция на перетаскивание маркера 
    geoPlacemark.events.add('drag', function(obj) {
        var coords = obj.get('target').geometry.getCoordinates() ;
        document.getElementById('longitude').value = coords[0].toPrecision(6) ;
        document.getElementById('latitude').value = coords[1].toPrecision(6) ;

        if (searchControl.isExpanded) {
            searchControl.collapse()};
    }) ;
   
}) ;

 

0 комментариев
Подписаться на комментарии к посту