2013-12-11 2 views
0

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

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

Я расчет этого пути

-(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; 

} 

Любая идея, как это сделать?

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

https://www.mapbox.com/

ответ

1

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

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

+0

Я попытался, но не получил ничего, что поможет рассчитать размер карты Я также внедрил этот код. _map.projection.plannetBounds.size.width/_map.metersPerPixel, но я далек от точности – ani

+0

Текущий размер карты всегда '(2^зум) * 256 для сетевой карты мерцара, как это. – incanus

0

MapBox IOS SDK имеет этот метод делегирования - (Недействительными) singleTapOnMap: (RMMapView *) MAPview по адресу: (CGPoint) точки;

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

и

  • (CGPoint) coordinateToPixel: (CLLocationCoordinate2D) координат Подсказка: [MapView coordinateToPixel: координировать];

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

Смежные вопросы