2015-07-24 5 views
0

Newb alert: Я полностью новичок в OpenLayers 3 и картировании в целом. Мой опыт работы с SQL Server и дизайном задних систем. У меня нет опыта работы с HTML, JavaScript, веб-разработкой и т. Д. Я уверен, что это очень простая проблема, но я не могу понять детали.Openlayers 3 преобразования координат

Я изменил один из образцов для OpenLayers.org и не ведет себя так, как ожидалось. Он использует объект GeoJSON и рисует точки на карте, но они не заканчиваются там, где это ожидалось. Видимо, есть какая-то конверсия или что-то, что происходит.

Пробу я здесь: GeoJSON example

Моя тестовая карта здесь: Test Map

Объект GeoJSON определяется как

 var geojsonObject = { 
      'type': 'FeatureCollection', 
      'crs': { 
       'type': 'name', 
       'properties': { 
        'name': 'EPSG:3857' 
       } 
      }, 
      'features': [ 
       { 
        'type': 'Feature', 
        'geometry': { 
         'type': 'Point', 
         'coordinates': [0, 0] 
        } 
       }, 
       { 
        'type': 'Feature', 
        'geometry': { 
         'type': 'Point', 
         'coordinates': [-8.575653e6, 4.70681e6] 
//White House, Washington DC Lon -77.03648269999997 Lat 38.89767579999999 
        } 
       } 
      ] 
     }; 

Через немного проб и ошибок, я был в состоянии чтобы показать свою точку зрения на лужайке Белого дома (NSA, без сомнения, помешала этот разговор), и нет никакого сходства с широтой и долготой, которую я вытащил из другого источника. Я понимаю, что порядок координат - [lon, lat], но я не вижу рифмы или причины, что -77.036 = -8.575e6. Другая точка [0,0] отображается справа там, где я ожидал бы этого.

Я попытался выяснить это сам и обыскал несколько мест, но я не могу найти ответ.

Кроме того, если бы вы могли направить меня на любые хорошие учебники, это было бы очень полезно. Благодаря!

ответ

0

Ваши данные GeoJSON находятся в EPSG: 3857, другая система координат, чем широта/долгота. Координаты не равны, но представляют одно и то же географическое местоположение.

См. http://spatialreference.org/ref/sr-org/6864/ для получения информации о EPSG: 3857. На карте ясно видно различие между заданными координатами точек в системах координат.

0

Openlayers фактически позволяет вам конвертировать их с помощью функций ol.proj.

Например, для преобразования из широты/долготы (EPSG: 4326) в сферическом Меркатора (EPSG: 3857 - один наиболее онлайн веб-карты используют, в метрах) вы можете сделать: -

var newCoordinates = ol.proj.transform(latLonCoordinate, "EPSG:4326", "EPSG:3857");

newCoordinates будет содержать преобразованные значения в массиве координат. То же самое можно сделать для «экстентов» (координаты ящика для верхнего левого/нижнего правого отображения карты) с использованием ol.proj.transformExtent(extent, fromProj, toProj).

+0

Я понял, что нужно было какое-то преобразование, которое должно было произойти. Для этого приложения, похоже, будет более эффективно выполнять преобразование на сервере, прежде чем точки будут сохранены в базе данных. JSON будет извлечен из базы данных и отправлен в веб-клиент. Поэтому, я думаю, мне нужны формулы преобразования. –

Смежные вопросы