Клуб API Карт

Неправильное отображение адреса

Пост в архиве.
sergtask
9 сентября 2013, 14:29

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

 

function changeMap() {
    var zoommap = parseInt($('.zoom').val());
    var city;
    (zoommap == 11) ? city = $('.nonelocation > option').attr('city') : city = 'Россия';
    ymaps.ready(init);
    function init() {
        var i = 0,
            addressInfo = getCityInfo();
        cityInfo = getCityList(),
        stores = ymaps.geocode(city, {
            results: 1
        }).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0),
                map = new ymaps.Map('map', {
                    center: (zoommap != 11) ? [58.5816936415, 49.6376237497] : firstGeoObject.geometry.getCoordinates(),
                    zoom: zoommap,
                    behaviors: ['default', 'scrollZoom']
                }),
                searchControl = new ymaps.control.SearchControl({
                    noPopup: false,
                    provider: 'yandex#map',
                    noCentering: 'true',
                    width: '500',
                    useMapBounds: true,
                    resultsPerPage: 1
                }),
                mGeocoder = new MultiGeocoder({
                    boundedBy: map.getBounds()
                });
            searchControl.events.add("resultselect", function (result) {
                map.geoObjects.options.set('preset', 'twirl#blueIcon');
                currentAddress = searchControl.getResultsArray()[result.get('resultIndex')].geometry.getCoordinates();
                var sibling = ymaps.geoQuery(map.geoObjects);
                var closestObject = sibling.getClosestTo(currentAddress);
                closestObject.balloon.open();
            });
            mGeocoder.geocode(cityInfo)
                .then(function (res) {
                        res.geoObjects.each(function (geoObject, item) {
                            var data = geoObject.properties.getAll();
                            geoObject.properties.set('hintContent', addressInfo[item].name);
                            geoObject.properties.set('balloonContentHeader', addressInfo[item].name);
                            geoObject.properties.set('balloonContentBody', addressInfo[item].address);
                            geoObject.properties.set('idDrug', addressInfo[item].id);
                            geoObject.events.add('click', function (e) {
                                current = e.get('target').properties.get('idDrug');
                            });
                        });
                        map.geoObjects.add(res.geoObjects);
                    },
                    function (err) {
                    });
        });
    }
}

 

6 комментариев

1. Я за Вами убрал, но на будущее, код лучше самому убирать под кат (кнопка врезка) Не все любят, когда ленту новостей "разносит" такая простыня на 2 экрана. Еще более правильный вариант - давать ссылку на страницу.

2. Очевидно что тут создается 2 локальных и 2 глобальных переменных. баг?

  var i = 0,            addressInfo = getCityInfo();        cityInfo = getCityList(),        stores = ymaps.geocode(city, {

3. Что такое getCityInfo?

что оно возвращает?

 

Вообщем со ссылкой будет проще разобраться.

function getCityList(){
            coords = new Array();
            $('.nonelocation > option').each(function(index, value){
                coords.push($(this).attr('keylocation'));
            });
           
            return coords;
        }

function getCityInfo(){
    info = new Array();
    $('.nonelocation > option').each(function(index, value){
        info[index]={'address':$(this).attr('address'),'name':$(this).attr('name'),'id':$(this).attr('id')};
    });
    return info;
}

Для таких вещей лучше использовать map

 Ссылка?

Сайт еще закрыт, могут открыть его на 10 мин. Когда Вы можете просмотреть ссылку? http://fenix-npk.ru/gde-kupit/

скиньте мне на почту dimik@yandex.ru

Отправил