Преобразование координат при вставке нового слоя Openlayers

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
bratok
Интересующийся
Сообщения: 24
Зарегистрирован: 04 июн 2012, 22:36
Репутация: 0

Преобразование координат при вставке нового слоя Openlayers

Сообщение bratok »

Такая проблема:
Создаю слой, в опциях указываю:

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

var option = {     
     ...
     protocol: new OpenLayers.Protocol.HTTP({
          url: 'my_url.kml', 
          format: new OpenLayers.Format.KML()
        }),
    ...
}
my_url.kml содержит список точек координаты задаются так

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

<Point><coordinates>39.22606925877791,44.884553969825845</coordinates></Point>
После добавления все добавленные точки отображаются корректно, при этом их координаты были преобразованы geometry = POINT(4366626.055101 5603365.144033001).
ПРОБЛЕМА.
Если создать пустой слой аналогично предыдущему без загрузки KML, а затем отдельным запросом получит точки, распасить результат и добавить полученные точки в слой, то преобразования координат не происходит и точки отображаются неверно.

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

var parser = new OpenLayers.Format.KML({
      extractStyles:true,
      extractAttributes:true});
 var options = {
          projection:'EPSG:4326',
          styleMap: new OpenLayers.StyleMap({
            "default": new OpenLayers.Style(defautMarkerStyleOptions)
          }),
          strategies: [new OpenLayers.Strategy.Fixed()],
          format: new OpenLayers.Format.KML()
        };
        
    var vectors1 = new OpenLayers.Layer.Vector("Vector Layer 1",options);
    var features = parser.read(data.responseText);
    vectors1.addFeatures(features);
    map.addLayer(vectors1);
В результате точки отобразились, но все в одной куче так как преобразование координат не было.
Как сделать преобразование координат?
bratok
Интересующийся
Сообщения: 24
Зарегистрирован: 04 июн 2012, 22:36
Репутация: 0

Re: Преобразование координат при вставке нового слоя Openlay

Сообщение bratok »

Тему можно закрыть, вопрос решается установкой свойств
internalProjection, externalProjection

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

var parser = new OpenLayers.Format.KML({
      internalProjection: new OpenLayers.Projection('EPSG:900913'),
      externalProjection: new OpenLayers.Projection('EPSG:4326'),
      extractStyles:true,
      extractAttributes:true});
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Преобразование координат при вставке нового слоя Openlay

Сообщение Denis Rykov »

Это один моментов, описанных в немногочисленной документации OpenLayers.
Spatial is now, more than ever, just another column- The Geometry Column.
Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей