Страница 1 из 1
Разбор примеров OL
Добавлено: 21 ноя 2013, 23:58
doox911
Пример всплывающей подсказки.
Код: Выделить всё
popup = new OpenLayers.Popup("chicken",
new OpenLayers.LonLat(5,40),
new OpenLayers.Size(200,200),
"example popup",
true);
map.addPopup(popup);
Как, Я, не пытался добавить цвет фона, у меня ничего не выходит. Как добавить цвет фона или рамку?
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 00:51
doujin
Справка говорит, что так (фон, прозрачность, рамка соответственно):
Код: Выделить всё
popup.setBackgroundColor("#ffbbbb")
popup.setOpacity(0.5)
popup.setBorder("2px")
Или через CSS поправить стили для классов всплывающих подсказок.
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 04:12
ericsson
HTML-код вывода popup-ов в OL ужасно громоздкий из-за того, что они тащат совместимость со старьем всяким. Так что манипуляции с ними чреваты глюками. Я в свое время под одного клиента переделывал через CSS весь вывод, чтобы заставить их выглядеть по-человечески и не так, как в оригинале.
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 08:51
doox911
ericsson писал(а):HTML-код вывода popup-ов в OL ужасно громоздкий из-за того, что они тащат совместимость со старьем всяким. Так что манипуляции с ними чреваты глюками. Я в свое время под одного клиента переделывал через CSS весь вывод, чтобы заставить их выглядеть по-человечески и не так, как в оригинале.
Тогда объясните пожалуйста. Вот есть описание того же Popup. Что выполняют Properties,Functions,Properties(Следующие за функциями по мануалу),Constructor(как его правильно использовать) и Functions.
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 10:14
Denis Rykov
А что не понятного, Functions - это методы объекта класса OpenLayers.Popup, Properties - его свойства, в Constructor приведена сигнатура функции-конструктора (функции, создающей новый объект и вызывающуюся стандартно в JavaScript с ключевым словом new).
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 11:19
ericsson
Стесняюсь спросить, уважаемый топикстартер, а вы вообще с JavaScript знакомы, или первый раз видите?
Потому что как-бы это все базовые понятия.
А еще я не вижу логической связи, на которую указывает ваше вводное "тогда". Потому что то, что в OL через задницу сделаны popup-ы (о чем я говорю в процитированном), никак не связано с базовыми понятиями программирования вообще и JS как частности (о которых вы спрашиваете далее).
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 19:21
doox911
ericsson писал(а):Стесняюсь спросить, уважаемый топикстартер, а вы вообще с JavaScript знакомы, или первый раз видите?
Потому что как-бы это все базовые понятия.
А еще я не вижу логической связи, на которую указывает ваше вводное "тогда". Потому что то, что в OL через задницу сделаны popup-ы (о чем я говорю в процитированном), никак не связано с базовыми понятиями программирования вообще и JS как частности (о которых вы спрашиваете далее).
Тупанул. Сильно!)
Просто мне не понятен следующий факт:
Создание обычных объектов в JS:
1. Способ:
var obj = { prop1:"Это первое свойство",prop2:"Это второе свойство"}ж
2. Способ:
var obj = new obj();
А тут Я встречаю примеры типа:
Код: Выделить всё
popup = new OpenLayers.Popup(
"chicken",
new OpenLayers.LonLat(5,40),
new OpenLayers.Size(200,200),
"example popup",
true
);
и:
Код: Выделить всё
var map = new OpenLayers.Map({
div: "map",
layers: [
new OpenLayers.Layer.OSM("OSM (without buffer)"),
new OpenLayers.Layer.OSM("OSM (with buffer)", null, {buffer: 2})
],
controls: [
new OpenLayers.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
}),
new OpenLayers.Control.PanZoom(),
new OpenLayers.Control.Attribution()
],
center: [0, 0],
zoom: 3
});
Описание очень странное. Вот это свойство: center: [0, 0], ,А это что?
Код: Выделить всё
controls: [
new OpenLayers.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
}),
new OpenLayers.Control.PanZoom(),
new OpenLayers.Control.Attribution()
],
И это:
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 19:30
Denis Rykov
Сформулируйте четко, что вам не ясно. Вам не ясно, что такое "center: [0, 0]"? В данном случае это атрибут объекта класса OpenLayers.Map, определяющий начальное положение центра карты, представлен в виде массива, состоящего их двух элементов. Не ясно что такое "controls"? Также атрибут, содержащий массив контролов карты. "new OpenLayers.LonLat" - вызов конструктора объекта класса OpenLayers.LonLat. Вроде все очевидно.
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 19:36
doox911
Denis Rykov писал(а):Сформулируйте четко, что вам не ясно. Вам не ясно, что такое "center: [0, 0]"? В данном случае это атрибут объекта OpenLayers.Map, определяющий начальное положение центра карты, представлен в виде массива, состоящего их двух элементов. Не ясно что такое "controls"? Также атрибут, содержащий массив контролов карты. "new OpenLayers.LonLat" - вызов конструктора объекта класса OpenLayers.LonLat. Вроде все очевидно.
Мне не ясно само описание. Я не случайно привёл описание объектов в ECMAScript5. А тут же, Я встречаю описания типа:
Код: Выделить всё
popup = new OpenLayers.Popup(
"chicken",
new OpenLayers.LonLat(5,40),
new OpenLayers.Size(200,200),
"example popup",
true
);
Хотя должно быть (по тому, как Я это понимаю):
Код: Выделить всё
popup = new OpenLayers.Popup(
имя свойства : "chicken",
new OpenLayers.LonLat(5,40), - тут вообще непонятно, где тут свойство, а где значение
new OpenLayers.Size(200,200), - аналогично
имя свойства : "example popup",
имя свойства : true
);
Аналогично и во втором коде.
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 19:44
Denis Rykov
Эммм. Вы с JavaScript вообще знакомы? Объект можно создать одним из двух способов: с помощью литерала:
либо с помощью функции-конструктора:
Код: Выделить всё
function A(name, lastname) {
this.name = name;
this.lastname = lastname;
}
a = new A('Java', 'Script');
тут вообще непонятно, где тут свойство, а где значение
В документации посмотрите сигнатуру функции-конструктора OpenLayers.Popup, тогда станет понятно какой аргумент должен передаваться вторым в списке. В случае с OpenLayers.Map - функции-конструктору в вашем примере просто передается всего лишь один единственный аргумент, представленный в виде объекта, а в OpenLayers.Popup несколько аргументов, вас это смущает? То есть в упрощенном варианте конструктор OpenLayers.Map можно представить так:
Код: Выделить всё
function M(options){
this.name = options.name;
this.lastname = options.lastname;
}
m = new M({name: 'Java', lastname: 'Script'});
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 20:48
doox911
a = new A('Java', 'Script');
m = new M({name: 'Java', lastname: 'Script'});
То есть, можно так и так?
Знаком. Но серьёзного ничего не писал.
Re: Разбор примеров OL
Добавлено: 22 ноя 2013, 20:52
Denis Rykov
Можно либо так, либо так, но не обоими способами одновременно - это зависит от того как устроена функция-конструктор.
Re: Разбор примеров OL
Добавлено: 28 ноя 2013, 01:16
doox911
В связи с тем, что библиотеки похожи.
Вот код:
Код: Выделить всё
var zoom = new L.control.zoom({
options:{
position: 'topleft',
zoomInText: '+_+',
zoomOutText: '-+-',
zoomInTitle: ' in',
zoomInTitle: 'out'
}
});
zoom.addTo(map);
Библиотека: leafletjs
Мануал
На карте появляется панель увеличения/уменьшения. Но она стандартна. То есть не отображает моих плюсов и минусов. Почему?
И как правильно следует понимать вот это описание:
<Control options> - понятно,что писать. options? - не понятно. И как они между собой разделяются?
Re: Разбор примеров OL
Добавлено: 28 ноя 2013, 04:46
Denis Rykov
<Control options> - это ссылка на описание возможных опций, options - это текстовое описание параметра конструктора, ? - означает, что параметр необязательный. В вашем случае создание контрола должно выглядеть так:
Код: Выделить всё
var zoom = new L.control.zoom({
position: 'topleft',
zoomInText: '+_+',
zoomOutText: '-+-',
zoomInTitle: ' in',
zoomInTitle: 'out'
});
И не валите вопросы в одну тему, один вопрос - одна тема.