Как заставить работать мапсервер

Я работаю с MapServer уже около 2 часов, но мне кажется, что это немного сложно для начала. Итак, вот мой вопрос
Есть ли способ заставить картографический сервер показывать простую карту всего мира, на которой я могу перемещать карту, чтобы увидеть разные части мира?
(из того, что я узнал до сих пор, он просто показывает вам карту, которую вы прошли через mapserv cgi, а карта статична и не может быть перемещена!)

РЕДАКТИРОВАТЬ: Мне все еще интересно, могу ли я иметь простую карту для всего мира или страны или чего-то еще! Должен ли я писать файлы .Map для всего самостоятельно??


person SpiXel    schedule 09.09.2012    source источник


Ответы (3)


Итак, после поиска и небольших усилий я нашел несколько JS-библиотек для этого. Одной из них была Open Layers. Вам просто нужно указать его в начале вашей html-страницы, например:

<script src="http://openlayers.org/api/OpenLayers.js"></script>

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

Var map, layer;

function init(){
    map = new OpenLayers.Map( 'map' );
    layer = new OpenLayers.Layer.MapServer( "NAME",
       "http://localhost/cgi-bin/mapserv", {map: 'PATH_TO_.MAP'} );
    map.addLayer(layer);
    map.zoomToMaxExtent();
}

И множество интересных руководств можно найти на spatialhorizons.com.
Надеюсь, это кому-нибудь поможет :)

person SpiXel    schedule 12.09.2012
comment
+1, но, вероятно, лучше использовать слой WMS в OpenLayers и настроить MapServer для обслуживания WMS. Объект Layer.Mapserver в OpenLayers устарел. - person MarkJ; 20.09.2012

MapServer — это просто MAP-СЕРВЕР. Похоже, вы в настоящее время используете скрипт cgi для отображения размещенной карты. Провайдеры WMS, такие как данные хоста MapServer, которые можно просмотреть с помощью клиентского приложения WMS. Таких приложений много. Вам понадобится более сложное клиентское приложение для подключения к MapServer, чтобы выполнять более сложные манипуляции с картой.

проверьте GoogleEarth

или NASA WorldWind

или я еще не использовал это, но похоже, что это может быть самым простым, если ненадежный.

person naugler    schedule 10.09.2012
comment
Правильно, но я искал способ иметь «динамические карты» для картографического сервера, а не для других GISEngines (карты Google, земля или что-то еще), и я не использую какой-либо скрипт cgi, я просто передаю двоичный файл mapserv файл (созданный после его компиляции) путь к файлу карты с режимом = карта, и он показывает карту, ничего не масштабировать, не перемещать или что-то еще, и кажется, что я должен написать файл .map со слоями или... для каждой точки мира таким образом! - person SpiXel; 11.09.2012
comment
Ладно, мапсервер не очень хороший клиент. Это как использовать apache для просмотра веб-страниц. Вы пробовали mode=browse? - person naugler; 11.09.2012
comment
Получение этого в режиме просмотра: в традиционном режиме BROWSE требуется ШАБЛОН в разделе WEB, но он не был предоставлен. - person SpiXel; 11.09.2012

First MapServer — это технология на стороне ГИС-сервера. По моему мнению, увеличение / панорамирование - это поведение на стороне клиента.

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

Таким образом, более вероятно, что ваша брошюра, API карт Google, Openlayers и т. д. обрабатывают обнаружение движения клиента и анализируют его в новый запрос getmap и отправляют запрос на сервер карт для получения ответа.

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

person Teng Ma    schedule 08.09.2016