2013-11-26 2 views
1

Я пытаюсь построить картину всего мира с набором наложенных контактов на MkMapView. Для этого я пытаюсь выполнить свой алгоритм следующим образом: сделать снимок экрана установить MkMapRegion в следующую часть карты, в настоящее время на экране сопоставляет все скриншоты, сделанные в одну общую картинку.Создание полной карты мира путем сопоставления скриншотов MKMapview

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

Любой человек с предложением

фрагмент кода здесь:

dispatch_queue_t _queue2 = dispatch_queue_create("com.screenShots", DISPATCH_QUEUE_SERIAL); 
dispatch_async(_queue2, ^{ 
    int maxLatitudeScreens,maxLongitudeScreens; 


    if (UIUserInterfaceIdiomPad==UI_USER_INTERFACE_IDIOM()){ 
     maxLatitudeScreens=SCREENS_LATITUDE_IPAD; 
     maxLongitudeScreens=SCREENS_LONGITUDE_IPAD; 
    }else{ 
     maxLatitudeScreens=SCREENS_LATITUDE_IPHONE; 
     maxLongitudeScreens=SCREENS_LONGITUDE_IPHONE; 
    } 
    @synchronized(self){ 
    for (int j=0; j<maxLongitudeScreens;j++){ 
     for (int i=0 ; i<maxLatitudeScreens; i++) { 

      double latitudeDelta=45; 
      double longitudeDelta=180; 
      double latit=55.0-j*111.0; 
      double longit=-180.0+i*longitudeDelta*2/maxLatitudeScreens; 

      CLLocationCoordinate2D newCenter= CLLocationCoordinate2DMake(latit, longit); 

      MKCoordinateSpan theSpan= MKCoordinateSpanMake(latitudeDelta, longitudeDelta); 
      MKCoordinateRegion theRegion=MKCoordinateRegionMake(newCenter, theSpan); 
      [_contactMapView setRegion:theRegion animated:YES]; 
      NSLog(@"latit=%f and longit=%f",_contactMapView.centerCoordinate.latitude, _contactMapView.centerCoordinate.longitude); 
      NSLog(@"mapviewCenterlatitude=%f and longitude=%f",_contactMapView.centerCoordinate.latitude, _contactMapView.centerCoordinate.longitude); 
      NSLog(@"latitudeSpan=%f and longitudeSpan=%f",_contactMapView.region.span.latitudeDelta, _contactMapView.region.span.longitudeDelta); 

      sleep(3); 
      [self screenshot:mapViewPrintFormatter.view]; 
      sleep(1); 

     } 
    } 
    //UIImageWriteToSavedPhotosAlbum ([self collateImages],nil,nil,nil); 
    [self collateImages]; 
    [self shareCollatedMapViewImage]; 

} 

}); 

ответ

0

Вы пробовали покинуть регион из уравнения после первоначальной настройки? Просто перемещайте центр, используя setCenterCoordinate:animated:, и масштаб должен оставаться неизменным.

+0

Первоначально я попробовал это безрезультатно. Используя регион, кажется, больше контроля над тем, какой элемент карты показан. Другие идеи? – Trantor

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