Страница 2 из 2
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 22:53
xen87
Этот последний запрос отправляет OpenLayers?
- да, когда я указываю координаты в метрах:
Код: Выделить всё
map.setCenter(new OpenLayers.LonLat(15563653, 4254704), zoom);
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 22:55
Denis Rykov
Покажите весь js код карты.
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 23:03
xen87
Вот:
Код: Выделить всё
<script src="OpenLayers.js"></script>
<script type="text/javascript">
<!-- var lon = 139.7245; >
<!--var lat = 35.6816; >
var zoom = 11;
<!--var map, layer, localWMS;>
function init(){
var options = {
div: "map",
projection: "EPSG:3857"
};
var map = new OpenLayers.Map(options);
var osm = new OpenLayers.Layer.OSM();
<!-- var gmap = new OpenLayers.Layer.Google("Google Streets", {visibility: false}); >
var localWMS = new OpenLayers.Layer.WMS(
"Local WMS layers",
"http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:/OSGeo4W/apps/mapserver-tutorial/example12/example.map",
{layers: 'mapserver_tutorial_wms_server', transparent: true},
{isBaseLayer: true, opacity: 0.9});
<!--map.addLayers([localWMS, osm, gmap]);>
map.addLayers([localWMS, osm]);
<!-- map.addLayer(osm);>
map.setCenter(new OpenLayers.LonLat(15563653, 4254704), zoom);
map.addControl( new OpenLayers.Control.LayerSwitcher() );
}
</script>
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 23:08
Denis Rykov
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 23:13
xen87
В этом случае подложку из ОСМ выводит (в правильном месте, т.е. согласно координатам), а локальный WMS - нет.
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 23:15
Denis Rykov
А какой запрос в этом случае уходит к серверу - посмотрите в консоли браузера.
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 23:22
xen87
Может я что-то не то смотрю, но в консоли Хрома - пусто. Также не обновляется файл - access.log. Будто запросы в WMS-серверу вообще не отправляются.
Re: Shape file + Mapserver + OpenLayers
Добавлено: 14 май 2014, 23:34
Denis Rykov
Re: Shape file + Mapserver + OpenLayers
Добавлено: 15 май 2014, 08:27
xen87
Денис, спасибо вам.
Разобрался я с консолью:
А какой запрос в этом случае уходит к серверу - посмотрите в консоли браузера.
- выводить ошибку
Код: Выделить всё
Uncaught TypeError: Cannot read property 'containsLonLat' of null
А сам WMS-слой - точно рабочий, сегодня успешно подключил его с помощью КуГИса.
Re: Shape file + Mapserver + OpenLayers
Добавлено: 19 май 2014, 20:40
xen87
Ура, миссия выполнена!
Только с помощью Дениса удалось решить возникшие вопросы.
По поводу предыдущего поста:
ошибка возникала, при условии
добавление только
одного слоя -
не указывая то, что он является базовым, т.е. писал так
Код: Выделить всё
var localWMS = new OpenLayers.Layer.WMS(
"Local WMS layers",
"http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:/OSGeo4W/apps/mapserver-tutorial/example12/example.map",
{layers: 'mapserver_tutorial_wms_server', transparent: true},
{isBaseLayer: false, opacity: 0.9}); // указание слой - не базовый
map.addLayer(localWMS); // добавление слоя
а надо так:
Код: Выделить всё
var localWMS = new OpenLayers.Layer.WMS(
"Local WMS layers",
"http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:/OSGeo4W/apps/mapserver-tutorial/example12/example.map",
{layers: 'mapserver_tutorial_wms_server', transparent: true},
{isBaseLayer: true, opacity: 0.9}); // указание слой - базовый
map.addLayer(localWMS); // добавление слоя
Вторая проблема была в том, что не отображались тайлы с ОСМ (( Даже в работающем примере Дениса - у меня сыпались розовые квадраты. Проблема решалась установкой apache -> копированием хтмл-страничек в соответствующую директорию (типа C:\OSGeo4W\apache\htdocs\) и правильного вызова урл:
, где "openlayers.html" - название моей странички.
Для сравнения как вызвал я:
Код: Выделить всё
file:///C:/OSGeo4W/apps/mapserver-tutorial/example14/openlayers.html
- в данном случае это не верный способ открытия хтмл-странички.
От себя еще добавлю - внимательно просматривайте содержимое .map файл - проекции и охваты должны совпадать.
Окончательный вариант скрипта выглядит так:
Код: Выделить всё
<script src="http://openlayers.org/dev/OpenLayers.js"></script>
<script type="text/javascript">
var zoom = 11;
function init(){
var options = {
div: "map",
projection: "EPSG:3857",
};
var map = new OpenLayers.Map(options);
var osm = new OpenLayers.Layer.OSM();
var localWMS = new OpenLayers.Layer.WMS(
"Local WMS layers",
"http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:/OSGeo4W/apps/mapserver-tutorial/example12/example.map",
{layers: 'mapserver_tutorial_wms_server', transparent: true},
{isBaseLayer: false, opacity: 0.9}); // не делаем наш слой ВМС-базовым
map.addLayers([osm,localWMS]);
// map.addLayer(localWMS);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.setCenter(new OpenLayers.LonLat(15563653, 4254704), zoom);
}
</script>
Как-то оно так.