Получить размер карты при увеличении с помощью Mapbox iOS SDK

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

Но я не получаю точное положение. Я предполагаю, что позиция на карте, которую я принимаю, неверна.

Я вычисляю так

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

       CGPoint location=[[touches anyObject] locatinInView:self];

       CGPoint point;
       point.x=(location.x * self.mapView.mapScrollView.contentSize.width)/self.size.width);
       point.y=(location.y * self.mapView.mapScrollView.contentSize.height)/self.size.height);

       mapView.mapScrollView.contentOffset=point;

}

P.N. Я пробовал и по-другому, но не работает. Это дает идеально, когда вы увеличиваете масштаб до 4, но после этого он не дает точного положения.

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

       CGPoint location=[[touches anyObject] locatinInView:self];

       CGPoint point;
       point.x=(location.x * self.mapView.projection.planetBounds.size.width/self.mapView.metersPerPixel)/self.size.width);
       point.y=(location.y * self.mapView.mapScrollView.projection.planetBounds.size.height/self.mapView.metersPerPixel)/self.size.height);

       mapView.mapScrollView.contentOffset=point;

}

есть идеи как это сделать?

Я использую SDK Mapbox.

https://www.mapbox.com/


person ani    schedule 11.12.2013    source источник


Ответы (2)


Не переходите непосредственно к просмотру прокрутки представления карты — это частный API (несмотря на то, что он с открытым исходным кодом). Взгляните на методы здесь вместо конверсий:

https://www.mapbox.com/mapbox-ios-sdk/api/#//api/name/coordinateToPixel:

person incanus    schedule 12.12.2013
comment
Я пытался, но не получил ничего, что помогло бы рассчитать размер карты. Я также реализовал этот код. _map.projection.plannetBounds.size.width/_map.metersPerPixel, но я далек от точности - person ani; 13.12.2013
comment
Текущий размер карты всегда (2 ^ zoom) * 256 для такой карты веб-меркатора. - person incanus; 19.12.2013

MapBox iOS SDK имеет этот метод делегирования -(void)singleTapOnMap:(RMMapView *)mapView at:(CGPoint)point;

RMMapView имеет метод - (CLLocationCoordinate2D)pixelToCoordinate:(CGPoint)pixelCoordinate Подсказка: [mapView pixelToCoordinate:(CGPoint)];

а также

  • (CGPoint)координатаToPixel:(CLLocationCoordinate2D)координата Подсказка: [mapView координатаToPixel:координата];

Надеюсь, это поможет вам.

person zhocker    schedule 07.01.2014