iOS MKMapView setRegion с анимацией: false выдает область, которая постоянно больше ожидаемой области

#ios #mkmapview #mapkit

#iOS #mkmapview #mapkit

Вопрос:

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

Есть несколько упоминаний о проблемах, подобных этой, в stack overflow, но реальных решений нет. Похоже, что MapKit от Apple просто бесполезен для отображения небольших регионов, т. Е. Менее ~ 100 метров. Бесит то, что я могу легко увеличивать меньшие области, используя обычное поведение масштабирования, но если я попытаюсь установить регион на точно такой же уровень масштабирования, он увеличится примерно наполовину.

Я потратил столько времени, пытаясь решить эту проблему, что решил просто переключить всю свою карту в библиотеку просмотра карт Google.

Мой проект находится в Swift 2.2, но я столкнулся с точно такой же проблемой в отдельном проекте с использованием Objective-C. Мой код Swift выглядит следующим образом:

     let holeBounds: CGRect = courseSingleton!.findGreenBounds(statsSingleton!.hole)
    let center = CLLocationCoordinate2DMake(Double(holeBounds.origin.y   holeBounds.size.height/2), Double(holeBounds.origin.x   holeBounds.size.width/2));

    let coordinateRegion = MKCoordinateRegionMake(center, MKCoordinateSpanMake(Double(holeBounds.size.height), Double(holeBounds.size.width)))

    mapView.setRegion(coordinateRegion, animated: false)
  

Ответ №1:

  let address : CLLocationCoordinate2D = self.getLocation(String(txtSearchlocation.text))
 let region = MKCoordinateRegionMakeWithDistance(address, 0.05, 0.05)
 MapView.setRegion(region, animated: true)
  

я думаю, вам следует попробовать это для увеличения..

Комментарии:

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