IGOR

Настройка карты Яндекс

Recommended Posts

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

 

Выключил вотермарк, стали фотки сохранятся......пипец, у меня там сотона балуется в коде что ли?

 

Но дома все равно не отображаются(номера)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может нужно восстановить сайт к предыдущей синхронизации копии? Может я когда колдовал в коде с яндекс картой чего то накосячил?

 

Вероятность есть, но она мала, так как вы правили javascript-код, а он к формам и выводу имеет косвенное значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вероятность есть, но она мала, так как вы правили javascript-код, а он к формам и выводу имеет косвенное значение.

Вот смотрите интересный пример, объявление которое в автоматическом режиме было выгружено на сайт etown.ru отбражается следующим образом.

post-60-0-97549600-1406508567_thumb.png

 

Мы видим точное расположение на яндекс карте, а теперь посмотрим как у нас сайте отображается это же объявление.

post-60-0-45178300-1406508721_thumb.png

 

Маркер просто никуда не указывает, почему так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот смотрите интересный пример, объявление которое в автоматическом режиме было выгружено на сайт etown.ru отбражается следующим образом.

 

Мы видим точное расположение на яндекс карте, а теперь посмотрим как у нас сайте отображается это же объявление.

 

Маркер просто никуда не указывает, почему так?

Исправил. В геолокации был лишний район.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то вечно, что-то с картами =)

 

Теперь Яша стал выводить города и деревни России Оо  (* до этого почти корректно выдавало по РБ, как и нужно.)

Теперь: вообще мимо - http://prntscr.com/6x5vus

Подскажите, как быть ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте в настройках GeoData в автоматическое распознавание координат добавить country_id.

Чтобы было 

country_id,city_id,street_id,number

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот смотрите интересный пример, объявление которое в автоматическом режиме было выгружено на сайт etown.ru отбражается следующим образом.

attachicon.gif2014-07-28 11-44-34 Скриншот экрана.png

 

Мы видим точное расположение на яндекс карте, а теперь посмотрим как у нас сайте отображается это же объявление.

attachicon.gif2014-07-28 11-45-15 Скриншот экрана.png

 

Маркер просто никуда не указывает, почему так?

Такое еще могло возникнуть, если координаты в файле загрузки указывались на карте Гугл, а после загрузки вы эти координаты применили к карте Яндекс. Сам натыкался на такое, небольшой сдвиг курсора от объекта присутствует. Координаты одни а местоположение на картах +/- 50-100 метров

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы сделать в яндкекс картах баллуны в виде ссылок на объявления можно сделать так:

 

1. Правим файл /apps/system/lib/frontend/grid/grid_constructor.php

 

Находим :

    protected function generateGridGeoDataOld($ra){    	$grid_geodata=array();    	foreach ( $ra as $item_id => $item_array ) {    		if( isset($item_array['geo_lat']) && isset($item_array['geo_lng']) && $item_array['geo_lat']!='' && $item_array['geo_lng']!='' ){    			$grid_geodata[]=array(    			        'lat'=>$item_array['geo_lat'],    				'lng'=>$item_array['geo_lng'],    				'id'=>$item_array['id']    			);    		}    	}    	return $grid_geodata;    }

Добавляем: 

	'href' => $item_array['href']

Получается: 

    protected function generateGridGeoDataOld($ra){    	$grid_geodata=array();    	foreach ( $ra as $item_id => $item_array ) {    		if( isset($item_array['geo_lat']) && isset($item_array['geo_lng']) && $item_array['geo_lat']!='' && $item_array['geo_lng']!='' ){    			$grid_geodata[]=array(    				'lat'=>$item_array['geo_lat'],    				'lng'=>$item_array['geo_lng'],    				'id'=>$item_array['id'],				'href' => $item_array['href']    			);    		}    	}    	return $grid_geodata;    }

2. Правим файл /template/frontend/agency/realty_grid.tpl

 

Находим строки:

				var myPlacemark = new ymaps.Placemark(						latlng,						{							iconContent: realty_geo_data[o].id						},						{							draggable: false,		    	            hideIconOnBalloonOpen: false,		    	            preset: "twirl#yellowStretchyIcon"									    	        }		    	    );								myPlacemark.events.add("click", function(e) {		      		var object = e.get('target');		      		var m=object.properties.get('iconContent');		      		destination = $('a[name=row'+m+']').offset().top - 50;					$('body').animate( { scrollTop: destination }, 1100 );		      	});		      	map.geoObjects.add(myPlacemark);

Меняем на:

				var myPlacemark = new ymaps.Placemark(						latlng,						{							iconContent: realty_geo_data[o].id,						},						{							draggable: false,		    	            hideIconOnBalloonOpen: false,		    	            preset: "twirl#yellowStretchyIcon",				    href: realty_geo_data[o].href		    	        }		    	    );									myPlacemark.events.add("click", function(e) {					  location = e.get('target').options.get('href');				});					      	map.geoObjects.add(myPlacemark);

Проверяем результат. 

Не забудьте написать как все получилось.

 

Я делал на шаблоне agency - про другие пока ничего не могу сказать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все конечно хорошо, но при обновлении это все затрется. (кроме изменений в файлах tpl)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что бы не лезть в системные файлы и ничего не затерлось - дам наводку на улучшение.

 

1. В каждом элементе списка (таблички) у нас уже есть href.

2. Вместе с href у нас там же есть и id, которое так же есть и в данных маркера.

3. Можно дополнить разметку строки таблицы аттрибутами id="go_from_marker_{тут идешка записи}" и data-href="{тут хреф ссылки}"

4. Ловец кликов на маркере изменить, что бы он искал строку с id= go_from_marker_+(ид из данных маркера), у найденной строки брал data-href и редиректил на него.

 

Получаем идентичную работу, но выполненную без правки системных файлов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Перечитал вышеописанное, поправить карту при просмотре объявления удалось, а вот на главной так и не нашел где это сделать, код не соответствует вышеописанному, дело до правки файлов js пока не дошло... это единственный вариант?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все таки сам разобрался... :)

Залез в realtymap.js и поправил кусок кода на строках 549-562:

 

_this.map = new ymaps.Map(_this.map_element, {
zoom: _this.options.defaultZoom,
center: [55.583011, 38.211377],
behaviors: behaviors,
type : 'yandex#map'
});
_this.map.controls.add(new ymaps.control.TypeSelector(['yandex#map', 'yandex#publicMap', 'yandex#satellite', 'yandex#hybrid']));
_this.map.controls.add('scaleLine');
if(_this.options.minimap){
_this.map.controls.add(new ymaps.control.MiniMap(
   { type: 'yandex#map' },
   { size: [90, 90] }
));
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Если карта в просмотре объявления смотрим файл realty_view.tpl (или realty_view_map.tpl - смотря какой шаблон).

Если карта в списке объявлений - то realty_grid.tpl

Если какрта в просмотре карты - то map.tpl

 

В этих файлах есть подключение карты.

надо найти строку 

behaviors: ["scrollZoom", "drag", "dblClickZoom"],

и превратить ее в 

behaviors: ["drag", "dblClickZoom"],

Что бы убрать мини-карту, чуть далее того места, где вы правили скролл, есть кусок

map.controls.add(new ymaps.control.MiniMap(   { type: 'yandex#satellite' },   { size: [90, 90] }));

Удалите его, что бы убрать мини-карту.

 

У меня шаблон Realia, тип главной страницы classic. Внес изменения в realty_grid.tpl.bak, как указано, в других файлах не нашел таких строчек, но изменения с картой не происходят. Я, так понимаю, что данные условия прописаны еще в каком то файле, но не могу найти в каком. Подскажите, где еще искать???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В реалии используется модуль realtymap.js для вывода карты в сетке. Так что искомого кода вы там не найдете. Там есть

RM.initJSON('map', loc_objects, map_type);

И все изменения проводятся через него посредством параметров. Что вам нужно сделать с картой?

Внес изменения в realty_grid.tpl.bak

.bak - означает резервную копию. Этот файл не включается в шаблон. Правки нужно вносить в realty_grid.tpl

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В реалии используется модуль realtymap.js для вывода карты в сетке. Так что искомого кода вы там не найдете. Там есть

RM.initJSON('map', loc_objects, map_type);

И все изменения проводятся через него посредством параметров. Что вам нужно сделать с картой?

Внес изменения в realty_grid.tpl.bak

.bak - означает резервную копию. Этот файл не включается в шаблон. Правки нужно вносить в realty_grid.tpl

Я хотел отключить скрол на карте главной страницы, чтобы при пролистовании вниз "небуксовать " на карте и удалить миникарту. Или чтобы активация карты происходила только после клика на нее. Подскажите где именно и какие изменения надо вносить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Все таки сам разобрался... :)

Залез в realtymap.js и поправил кусок кода на строках 549-562:

 

_this.map = new ymaps.Map(_this.map_element, {
zoom: _this.options.defaultZoom,
center: [55.583011, 38.211377],
behaviors: behaviors,
type : 'yandex#map'
});
_this.map.controls.add(new ymaps.control.TypeSelector(['yandex#map', 'yandex#publicMap', 'yandex#satellite', 'yandex#hybrid']));
_this.map.controls.add('scaleLine');
if(_this.options.minimap){
_this.map.controls.add(new ymaps.control.MiniMap(
   { type: 'yandex#map' },
   { size: [90, 90] }
));
}

 

Заменил код как у Вас, действительно со схемой лучше смотрится. Для отключения скрол удалил {behaviors.push("scrollZoom");} в строках 342-344 и 543-545.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что бы не лезть в реалтимап.жс нужно в строке

RM.initJSON('map', loc_objects, map_type);

сделать изменения

RM.initJSON('map', loc_objects, map_type, {scrollZoom: false, minimap: false, yandexMapType: 'yandex#map'});

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обратил внимание, что на карте (на главной сайта и на последующих страницах) отображаются маркеры только тех объектов, которые находятся на данной странице а не все. Эти уменьшает количество объектов к выбору пользователем, т.к. некоторые кликают на маркеры прямо на карте. Не видя маркера на карте в интересуемой местности, могут дальше не искать. Это излечимо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обратил внимание, что на карте (на главной сайта и на последующих страницах) отображаются маркеры только тех объектов, которые находятся на данной странице а не все. Эти уменьшает количество объектов к выбору пользователем, т.к. некоторые кликают на маркеры прямо на карте. Не видя маркера на карте в интересуемой местности, могут дальше не искать. Это излечимо?

Присоединяюсь.  Маркеры показывают с одной страницы, с остальных страниц маркеры отсутствуют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В некоторых шаблонах есть уже функции для всех объектов, в некоторых еще не успели сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас