Некоторое время я занимался разработкой в Картах Google и переключаюсь на OpenLayers, но застрял в одной точке: я рисую векторы, которые в основном имеют круглую форму, но также содержат некоторую пользовательскую геометрию, поэтому я не могу использовать createRegularPolygon. Я создаю массив точек и отправляю его объекту OpenLayers.Layer.Vector. Это прекрасно работает, но получающиеся «круги» только вокруг экватора, а не в более высоких широтах. Они раздавлены примерно на столько же, сколько базовая карта в более высоких широтах, что, кажется, имеет смысл. Если я использую Google в качестве базового слоя, то они будут правильной формы на всех широтах, но я создаю автономное мобильное решение, так что это не сработает.
Что я использую для базового слоя (или какие параметры нужно установить), чтобы моя геометрия оставалась круглой на всех широтах без использования Google или онлайн-карт?
Не существует карты всей Земли, на которой все (истинные, сферические) круги остаются действительно круглыми. Однако есть способы картирования Земли, в которых почти все достаточно маленькие круги имеют круглую форму. Они основаны на конформных проекциях . По определению, изменения, которые конформная проекция вносит в расстояния внутри небольших областей, имеют только два типа: равномерное растяжение и вращение. Очевидно, что эти изменения не делают круги менее круглыми.
Карта Земли с августовской эпициклоидальной проекцией . Большинство кругов на этой карте будут выглядеть действительно круглыми.
Обычно используемые конформные проекции - это Mercator (цилиндрическая проекция), Stereographic (азимутальная проекция) и конформная коническая проекция Ламберта (очевидно, коническая проекция). Они охватывают три основных семейства проекций, предоставляя вам гибкость при выборе конкретного «взгляда» на сетку меридианов и линий широты. Дополнительные опции, которые могут быть доступны в некоторой GISes, включают Миллер сплющенный стереографические , Литтры , биполярное Oblique Конических Равноугольный , Лагранж , Eisenlohr , Август эпициклоидальный , Guyou , Пирс квинкунциальный, GS50 , различные Adams проекции и Ли . (Источник: Snyder & Voxland, альбом картографических проекций. Профессиональный документ USGS 1453.) Последние два показывают множество возможных конформных проекций, которые можно создать, и показывают, как конформные проекции не являются действительно «сохраняющими форму»: проекции Адамса конформно отображают полушарие в квадрат, и проекция Ли помещает его в треугольник. Фактически, теорема Римана о комплексном анализе показывает, что вы можете конформно отобразить полусферу в любой многоугольник!
OpenLayers использует библиотеку проекций Proj4js . Исходный код для проекций находится в папке / proj4js / lib / projCode /. Конформные проекции, включенные в последнюю версию (1.0.2), представляют собой Mercator , два поперечных меркатора , два наклонных меркатора («Hotine» и «Swiss Oblique»), конформный конус Ламберта и стереографический .
Если ваше приложение не предназначено для работы по всему миру, изучите и изучите эти варианты, чтобы определить, какой из них лучше всего подходит для вашего региона . Все это может быть легко перецентрировано и изменено, чтобы минимизировать общее искажение (не только формы, но также областей и расстояний) в пределах определенной области. Стандартное решение по всему миру - это вариант Mercator, популярный на картах Google.
источник
Ну, очевидно, у вас будут проблемы, если вы используете базовую карту в проекции EPSG: 4326. Вам нужна сферическая проекция Меркатора, как вы заметили, Google Maps и других коммерческих картографических провайдеров. Идите дальше и прочитайте это, чтобы лучше понять эту проблему.
Для вас автономное мобильное решение OpenStreetMap , вероятно, будет хорошим решением.
источник