Я знаком с использованием Google Maps Javascript API. Недавно я начал использовать фреймворк MapKit для проекта iphone, но мне трудно понять масштабирование и установить регион на карте.
В Google Maps API я использовал целочисленные уровни масштабирования, такие как 8, 9, 10 вместе с простой функцией setZoom (). Единственный эквивалентный метод, который я вижу в платформе MapKit, - это setRegion: animated. Насколько я понимаю, мне нужно установить значения "дельты" широты и долготы для диапазона, чтобы указать уровень масштабирования. Но я действительно не имею представления, что представляют собой эти значения (я читал документацию).
Когда я использую делегат MKMapView и отслеживаю значения диапазона в методе делегата regionDidChange, кажется, что результаты не коррелируют друг с другом. Это нормально, когда я уменьшаю масштаб и вижу, что значения дельты диапазона увеличиваются, как указано в документации. Но внезапно я перетаскиваю карту без увеличения, и значения дельты становятся равными 0,0.
Может кто-нибудь объяснить, какова точка отсчета для этих промежутков и дельты? Или есть какой-либо алгоритм для преобразования целочисленного уровня масштабирования (например, 9) в эти значения дельты?
В качестве бонуса вопрос, есть ли способ указать минимальный-максимальный уровень масштабирования в MKMapView :)
Благодарность
источник
Если вы предпочитаете использовать явные уровни масштабирования вместо определения MKCoordinateSpan, я написал категорию, которая добавляет поддержку для указания уровня масштабирования MKMapView. Код можно найти здесь .
источник
Диапазон выражается в градусах широты и долготы. Вместо этого существует метод создания структур MKCoordinateRegion, использующий расстояние. Возможно, вы используете MKCoordinateRegionMakeWithDistance для указания диапазона, а затем, когда вы проверяете его в regionDidChange, вы видите диапазон широты / долготы, который хранится в структуре MKCoordinateRegion.
Насколько мне известно, целочисленные уровни масштабирования недоступны или вообще не используются при работе с MKMapKit. Я лично предпочитаю использовать цифры размаха, они более гибкие.
Вы не можете указать максимальное и минимальное масштабирование, и я не знаю, как его взломать. MKMapKit на самом деле сейчас довольно слаб, я очень разочарован отсутствием функций.
источник
Быстрое сравнение уровней масштабирования для местоположения с помощью maps.google.com путем проверки строки запроса ссылки показывает, что значения диапазона dx и dy увеличиваются в 2 раза:
(0.005334, 0.011834) starting span (0.010668, 0.023668) dx: x2, dy: x2 (0.021335, 0.047337) dx: x2, dy: x2 (0.042671, 0.094671) dx: x2, dy: x2 ...
источник
Категория Бранта в MKMapView работает хорошо. Однако похоже, что он не был обновлен для поддержки новых устройств с экранами сетчатки при вычислении mapSizeInPixels.
Это можно исправить, заменив эту строку:
CGSize mapSizeInPixels = mapView.bounds.size;
С этой строкой:
CGSize mapSizeInPixels = CGSizeMake(mapView.bounds.size.width * [UIScreen mainScreen].scale, mapView.bounds.size.height * [UIScreen mainScreen].scale);
источник