2014-12-22 1 views
1

Я замечаю, что когда я устанавливаю максимальный уровень масштабирования в примере до 19, увеличение увеличивается до 20, когда я использую плитки. Я не знаю почему. Это всегда 1 уровень увеличения, чем тот, который я установил.iOS Карта Google SDK: проблема с уровнем maxZoom при использовании плиток

Смотрите ниже примере (Это из Google SDKDemo примера, я просто изменил URL, чтобы указать на мой домен):

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:23.614328 
                  longitude:58.545284 
                   zoom:18]; 

    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 

    [mapView_ setMinZoom:5 maxZoom:19]; 
    //mapView_.buildingsEnabled = NO; 
    //mapView_.indoorEnabled = NO; 
    mapView_.mapType = kGMSTypeHybrid; 
    self.view = mapView_; 

tileLayer_.map = nil; 

    // Create a new GMSTileLayer with the new floor choice. 
    GMSTileURLConstructor urls = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) { 
     NSString *url = [NSString stringWithFormat:@"http://www.example.com/%tu/%tu/%tu.png", zoom, x, y]; 
     NSLog(@"URL: %@",url); 
     return [NSURL URLWithString:url]; 
    }; 
    tileLayer_ = [GMSURLTileLayer tileLayerWithURLConstructor:urls]; 
    tileLayer_.map = mapView_; 

Теперь, если я не приближать я буду получать журнал напечатал:.

2014-12-22 20: 06: 02,342 SDKDemos [1792: 941894] URL: http://www.example.com/20/694778/453520.png

Обратите внимание, уровень масштабирования после домена 20, хотя, макс я поставил его на 19. Обратите внимание, я с использованием Google SDK версии 1.9

ответ

2

Я думаю, что увеличение в GMSTileURLConstructor отличается от масштабирования MapView.

Я пытался поставить некоторые NSLog внутри блока GMSTileURLConstructor, как следующее:

GMSTileURLConstructor urls = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) { 
     NSString *url = [NSString stringWithFormat:@"http://www.example.com/%tu/%tu/%tu.png", zoom, x, y]; 
     NSLog(@"URL: %@",url); 
     NSLog(@"max zoom: %f", mapView_.maxZoom); 
     NSLog(@"max tileLayer zoom: %f", tileLayer_.map.maxZoom); 
     return [NSURL URLWithString:url]; 
    }; 

Он печатает

2014-12-22 08:56:07.959 HelloMap[30797:1797670] max zoom: 19.000000 
2014-12-22 08:56:07.959 HelloMap[30797:1797670] max tileLayer zoom: 19.000000 

Я думаю this answer может помочь вам.

Часть из ответа:

* "зум для GMSTileLayer является NSUInteger в то время как зум для камеры поплавок трансфокации для GMSTileLayer используется для определения количества плитки Хотя зум для камеры используется.. определить количество точек на основе формулы 256 * 2N. "*

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