Od jakiegoś czasu rozwijam się w Mapach Google i przechodzę do OpenLayers, ale utknąłem w jednym punkcie: rysuję wektory, które są w większości okrągłe, ale zawierają również niestandardową geometrię, więc nie mogę użyć createRegularPolygon. Tworzę tablicę punktów i wysyłam ją do obiektu OpenLayers.Layer.Vector. Działa to świetnie, ale powstałe „koła” są okrągłe tylko w pobliżu równika, a nie na wyższych szerokościach geograficznych. Są one zgniecione mniej więcej tak samo, jak mapa bazowa na wyższych szerokościach geograficznych, co wydaje się mieć sens. Jeśli użyję Google jako warstwy podstawowej, to będą one mieć prawidłowy kształt na wszystkich szerokościach geograficznych, ale robię mobilne rozwiązanie offline, więc tak się nie stanie.
Czego używać do warstwy bazowej (lub jakie parametry ustawić), aby moja geometria pozostała okrągła na wszystkich szerokościach geograficznych bez korzystania z Google lub map online?
Nie istnieje mapa całej ziemi, na której wszystkie (prawdziwe, sferyczne) okręgi pozostają naprawdę okrągłe. Istnieją jednak sposoby mapowania Ziemi, w których prawie wszystkie wystarczająco małe koła są okrągłe. Opierają się one na projekcjach konformalnych . Z definicji zmiany, jakie rzut konformalny wprowadza na odległości w małych obszarach, są dwojakiego rodzaju: równomierne rozciąganie i obrót. Oczywiście te zmiany nie zmniejszają krągłości kół.
Mapa ziemi z sierpniową projekcją epicykloidalną . Większość kręgów na tej mapie będzie naprawdę okrągła.
Powszechnie stosowanymi projekcjami konformalnymi są Mercator (projekcja cylindryczna), Stereographic (projekcja azymutalna) i Conformal Conic Lambert (projekcja stożkowa, oczywiście). Obejmują one trzy główne rodziny projekcji, dając ci elastyczność wyboru konkretnego „wyglądu” do siatki południków i linii szerokości geograficznej. Dodatkowe opcje, które mogą być dostępne w niektórych GISes, obejmują Miller Oblated Stereographic , Littrow , Bipolar Oblique Conic CONFORMAL , Lagrange , Eisenlohr , Sierpień epicykloidalne , Guyou , Peirce kwinkunksa, GS50 , różne projekcje Adamsa i Lee . (Źródło: Snyder & Voxland, Album of Map Projections. USGS Professional Paper 1453.) Te dwa ostatnie wskazują na bogactwo możliwych projekcji konformalnych, które można utworzyć, i pokazują, w jaki sposób projekcje konformalne nie są tak naprawdę „zachowujące kształt”: projekcje Adamsa mapowane zgodnie półkula w kwadrat, a projekcja Lee umieszcza ją w trójkącie. W rzeczywistości Twierdzenie Riemanna o odwzorowaniu złożonej analizy pokazuje, że można w sposób zgodny mapować półkulę w dowolnym wielokącie!
OpenLayers korzysta z biblioteki projekcji Proj4js . Kod źródłowy projekcji jest rozpowszechniany w folderze / proj4js / lib / projCode /. Prognozy zgodności zawarte w najnowszej wersji (1.0.2) to Mercator , dwa poprzeczne Mercatory , dwa ukośne Mercatory („Hotine” i „Swiss Oblique”), Lambert Conformal Conic i Stereographic .
O ile Twoja aplikacja nie jest zaprojektowana do pracy na całym świecie, zapoznaj się z tymi opcjami i przeanalizuj je, aby określić, które z nich będą najlepsze dla Twojego regionu zainteresowania . Wszystkie te można łatwo zaktualizować i przeskalować, aby zminimalizować całkowite zniekształcenie (nie tylko kształtów, ale także obszarów i odległości) w określonym obszarze. Domyślnym rozwiązaniem na całym świecie jest wariant Merkatora, spopularyzowany przez mapy Google.
źródło
Oczywiście będziesz mieć problem, dopóki użyjesz mapy bazowej w projekcji EPSG: 4326. Potrzebna jest projekcja sferyczna Mercatora, którą, jak zauważyłeś, są Mapy Google i inni komercyjni dostawcy map. Śmiało i przeczytaj to, aby lepiej zrozumieć ten problem.
Dla Ciebie rozwiązanie mobilne offline OpenStreetMap byłoby prawdopodobnie dobrym rozwiązaniem.
źródło