Mam mapy kafelkowe wektorowe / topo / graficzne dla niektórych miejsc w Ameryce Północnej, które zostały opublikowane jako usługa REST ArcGIS Server. Te mapy (A) są oparte na odwzorowaniu EPSG: 26912. Teraz chcę użyć ich jako mapy bazowej dla mojej aplikacji internetowej OpenLayers; poza tym chcę również zużywać inne źródła map podstawowych (B), np. OpenStreetmap, Google Maps, ESRI itp. Ponieważ większość z tych map jest w EPSG: 900913, co jest moją sferyczną projekcją Mercatora, jeśli dodam te podstawowe warstwy mapy w składniku mapy OpenLayers, grupa A i grupa B nie nakładają się poprawnie, co oznacza, że są wyświetlane jako osobne mapy.
Wiem, że jest to coś związanego z projekcją i może potrzebuję trochę kodu do proj4js, jednak jako początkujący nie wiem od czego zacząć.
Zasadniczo chcę umieścić mapy OSM / Google jako mapę bazową dla całego świata na poziomie 1, a następnie umieścić mapy podstawowe EPSG: 26912 dla niektórych miejsc w Ameryce Północnej na poziomie 2, a inne WMS lub WFS na najwyższym poziomie.
czy muszę przekształcić EPSG: 26912 na EPSG: 900913 lub odwrotnie? Chyba powinienem użyć EPSG: 900913 jako projekcji bazowej.
Odpowiedzi:
OpenLayers mogą przekształcać warstwy wektorowe (jak WFS). Jeśli twoja warstwa wektorowa jest w formacie EPSG: 900913 lub EPSG: 4326 OpenLayers może obsłużyć samą transformację, w przeciwnym razie wymaga włączenia Proj4js.
Istnieją przykłady użycia OpenLayers z Proj4js.
Warstwy rastrowe nie mogą być przekształcane przez OpenLayers. Jeśli chcesz uwzględnić je w innej projekcji, musisz je ponownie wykonać samodzielnie lub użyć serwera proxy WMS, takiego jak GeoWebCache .
źródło
Każdy dobry WMS powinien być w stanie zrobić dla ciebie reprojection. Nie mam jednak pojęcia, czy ArcGIS Server to dobry WMS. Jeśli nie jest w stanie podać warstwy w 900913, rozważ użycie GeoServer lub MapServer jako kaskadowego WMS do obsługi ponownej rzutowania.
źródło
Nie jestem guru OpenLayers, ale musisz określić rzutowanie obiektu mapy. Myślę, że domyślnie jest to WGS84 ... Mogę się mylić, może nawet będę źródłem pierwszej warstwy dodanej do mapy.
W każdym razie spróbuj czegoś takiego (Zmień odpowiednio granice)
Pamiętaj jednak, że kiedy chcesz ustawić centrum mapy za pomocą lat, lon musisz rzutować tę współrzędną z WGS na GoogleMercator w ten sposób (używając zmiennej wgs84 i googleMercator z góry).
źródło
Pierwszą rzeczą jest zdefiniowanie projekcji mapy i wyświetlenie w następujący sposób:
Dodawanie konwersji współrzędnych
Kiedy zaczniesz używać różnych rzutów, musisz zacząć myśleć o możliwości przekształcenia współrzędnych z jednego rzutu na drugi, albo podczas wyświetlania tych współrzędnych, albo podczas odczytu danych wektorowych w innym układzie współrzędnych niż na mapie. Jak wspomniano wcześniej, ta logika konwersji nie jest udostępniana przez OL, więc musisz użyć Proj4js, który musisz umieścić na swojej stronie:
po definicji możesz to zrobić metodą transformacji:
źródło