Сервис Навител.Карты и OpenLayers

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Сервис Навител.Карты и OpenLayers

Сообщение dobeer »

Посмотрел сервис Навител.Карты очевидно что сделан на OpenLayers :)
Перерисовать как у них элементы навигации понятно, а вот как изменить цвет выпадающего поля "Переключателя слоев" хотелось бы узнать (видимо надо гдето изменять в файле OpenLayers.js)? И как сделать водяные знаки(еле заметный прозрачный логотип на фоне карты).
Vadim Zudkin
Новоприбывший
Сообщения: 6
Зарегистрирован: 31 янв 2010, 13:35
Репутация: 0

Re: Сервис Навител.Карты и OpenLayers

Сообщение Vadim Zudkin »

Решил полюбопытствовать как были добавлены водяные знаки.
По моим наивным представлениям водяные знаки сформированы с помощью Tile Map Server
То есть на экраны выводятся отдельные картинки.
Посмотрел как формируется карта:
nmap = new Navitel.Map(url);
Соответсвенно перешёл на
http://map.navitel.su/navitel/theme/navitel/main.js
Там следующий класс
OpenLayers.Layer.TMS=OpenLayers.Class(.........

Всё специально запутано.
Скучно в этом разбираться.
kilex
Новоприбывший
Сообщения: 3
Зарегистрирован: 05 фев 2010, 19:18
Репутация: 0

Re: Сервис Навител.Карты и OpenLayers

Сообщение kilex »

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

Очень хочется :)
bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Сервис Навител.Карты и OpenLayers

Сообщение bim2010 »

Всё специально запутано.
Дело не в OL а в большом куске, который дописан на PHP, он исполняется на серверной стороне. Например:

Код: Выделить всё

                           if (this.nmap.developmentMode == 'RS') {
			this.getUrlValue = "php/server.php";
		}
		if (this.nmap.developmentMode == 'N') {
			this.getUrlValue = this.nmap.getUrl();
		}
С клиентской стороны пробки - ява скрипт JAMS.js

Код: Выделить всё

Navitel.Layer.Jams = OpenLayers.Class(OpenLayers.Layer.TMS, Navitel.Layer, {
	 * Property: name
	 * {String}
	name: "Пробки",
	 * Property: reloadInterval
	 * {Ineger} in seconds
	reloadInterval: 120,
     * Constructor: Navitel.Layer.Jams
    initialize: function() {
		this.reloadInterval = this.reloadInterval * 1000; 
		Navitel.Layer.prototype.initialize.apply(this, arguments);
		OpenLayers.Layer.TMS.prototype.initialize.apply(this, [this.name,
		                                                       this.nmap.getUrl(),
		                                                       {
		                                                    	   'getURL': this.getUrl,
		                                                    	   //'transitionEffect': 'resize',
		                                                    	   'isBaseLayer': false,
		                                                    	   'alpha': 1,
		                                                    	   'buffer': 0
		                                                       }]);
		this.nmap.map.addLayer(this);
		window.NavitelLayerJams = this;
		setInterval(this.reloadRun, this.reloadInterval);
    },
Т.е. тоже TMS протокол тайлы которого генерятся на серверной стороне.
Грамотное решение и этого нет в OL. Навителовцы молодцы.
Логотип на фоне карты – еще один слой TMS - слой подложка поверх которого, загружена карта.
Правильней обратится к автору чтоб не гадать …
author Vyacheslav Shindin shindin@rssystems.ru
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость