Координаты нижнего левого угла карты смещены на несколько пикселей - PullRequest
0 голосов
/ 30 сентября 2010

Я пытаюсь поместить Аннотация в нижний левый угол видимой в данный момент области карты, хотя следующий код

CLLocationCoordinate2D origin = getOriginOfRegion(mapView.region);
[[[SimpleAnnotation alloc] initWithCoords:origin] autorelease];
...
extern CLLocationCoordinate2D getOriginOfRegion(MKCoordinateRegion region){
    return CLLocationCoordinate2DMake(region.center.latitude-region.span.latitudeDelta/2,
                                  region.center.longitude-region.span.longitudeDelta/2);
}

, где SimpleAnnotation настолько прост, насколько это возможно;ставит точку булавки на несколько градусов от фактического угла:

На правой стороне уровень масштабирования выше, и, как вы можете видеть, ошибка значительно меньше.

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

Кто-нибудь решил эту проблему?проблема?Я заметил, что значения широты не являются «линейными» в mapView, мне нужны некоторые подсказки, чтобы понять, как их преобразовать.

1 Ответ

2 голосов
/ 01 октября 2010

Я не знаю, сработает ли это, но я предлагаю вам попытаться разрешить представлению карты преобразовывать координаты вида в координаты карты с помощью convertPoint:toCoordinateFromView:.

Например:

CGPoint bottomLeftPoint = CGPointMake(CGRectGetMinX(map.bounds), CGRectGetMaxY(map.bounds));
CLLocationCoordinate2D bottomLeftCoord = [map convertPoint:bottomLeftPoint toCoordinateFromView:map];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...