Страница 1 из 1

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

Добавлено: 23 янв 2010, 15:23
dobeer
Посмотрел сервис Навител.Карты очевидно что сделан на OpenLayers :)
Перерисовать как у них элементы навигации понятно, а вот как изменить цвет выпадающего поля "Переключателя слоев" хотелось бы узнать (видимо надо гдето изменять в файле OpenLayers.js)? И как сделать водяные знаки(еле заметный прозрачный логотип на фоне карты).

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

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

Всё специально запутано.
Скучно в этом разбираться.

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

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

Очень хочется :)

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

Добавлено: 05 фев 2010, 23:08
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