2014-05-16 19 views
5

için Garip Verileri döndürüyor GMSTileURLConstructor kullanarak iOS için Google Haritalar'da özel bir yer paylaşımı çizmeye çalışıyorum. Benim URL almak için aşağıdaki kodu kullanıyorumGMSTileURLConstructor

GMSTileURLConstructor urls = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) { 
     NSString *url = @""; 

     for (NSDictionary *limits in [selectedPropertyMap objectForKey:@"property_map_zoom_levels"]) { 
      int zoomLevel = [[limits objectForKey:@"level"] intValue]; 
      int tileMinX = 0; 
      int tileMaxX = 0; 
      int tileMinY = 0; 
      int tileMaxY = 0; 

      if ([limits objectForKey:@"tile_min_x"] != (id)[NSNull null]) { 
       tileMinX = [[limits objectForKey:@"tile_min_x"] intValue]; 
      } 
      if ([limits objectForKey:@"tile_max_x"] != (id)[NSNull null]) { 
       tileMaxX = [[limits objectForKey:@"tile_max_x"] intValue]; 
      } 
      if ([limits objectForKey:@"tile_min_y"] != (id)[NSNull null]) { 
       tileMinY = [[limits objectForKey:@"tile_min_y"] intValue]; 
      } 
      if ([limits objectForKey:@"tile_max_y"] != (id)[NSNull null]) { 
       tileMaxY = [[limits objectForKey:@"tile_max_y"] intValue]; 
      } 

      if (zoomLevel == (unsigned long)zoom) { 
       if ((tileMinX <= x) && (tileMaxX >= x) && (tileMinY <= y) && (tileMaxY >= y)) { 
        url = [NSString stringWithFormat:@"%@%@/%@/%@/%lu_%lu.png", MAP_URL, [property objectForKey:@"id"], [limits objectForKey:@"property_map_id"], [limits objectForKey:@"id"], (unsigned long)x, (unsigned long)y]; 
        NSLog(@"url -> %@/zoom %lu/%i",url, (unsigned long)zoom, zoomLevel); 
        return [NSURL URLWithString:url]; 
       } 
      } 
     } 
     return [NSURL URLWithString:url]; 
    }; 

Ben şu bilgileri almak URL zoom ve zoomLevel oturumu olduğunda: Aynı zamanda

2014-05-16 17:25:15.621 Application[24491:61003] url -> <BASEURL>/16/9/19/159786_195303.png/zoom 19/19

Kamera değiştiğinde kamera yakınlaştırıyor, kamera

2014-05-16 17:25:15.640 Application[24491:60b] camera changed - zoom 18.022364

kimse yakınlaştırma düzeyi değeri tutarsızlık açıklayabilir

ve nasıl kaydederuygun şekilde eşleştirmek için? Biraz araştırma yaptım sonra

+0

Kullandığınız Google Map SDK sürümü nedir? 1.8.0 veya 1.7.2? – Ricky

+0

1.7.2'ye benziyor. – Jeremy1026

+0

Bunu hiç çözdünüz mü? – funkybro

cevap

6

, ben yönlü Google GMSTileLayer içincamera of mapView için yakınlaştırma düzeyi ile aynı değildir yakınlaştırma düzeyini ele alır inanıyoruz. yakınlaştırma düzeyinde bütün dünya 0 At

GMSTileLayer sınıfı başvurusu

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_tile_layer

o karo için her ikisi de 0'dır tek karo, ve koordinatlar x ve y ile kaplı bir kare. Yakınlaştırma seviyesi 1, 'da dünya, x ve y 0 veya 1 olan 4 fayans ile kaplıdır.

https://developers.google.com/maps/documentation/ios/views#zoom

kameranın yakınlaştırma düzeyi MapView Kamera için

haritanın ölçeğini belirler. modelinde daha geniş zum seviyeleri ekranda daha fazla görüntülenebilirken, boyutlarında daha küçük zum seviyeleri ekranın daha fazla yerinde görülebilir. yakınlaştırma seviyesi 0'da haritanın ölçeği, tüm dünyanın yaklaşık 256 puanlık bir genişliğine sahip olduğu şekildedir.

Zoom düzeyini 1 arttırmak, dünyanın genişliğini ekranında iki katına çıkarır. Bundan dolayı, N yakınlaştırma seviyesinde, dünyanın genişliği yaklaşık 256 * 2N, yani, zum seviyesinde 2, tüm dünya yaklaşık 1024 nokta genişliğindedir. Yakınlaştırma seviyesinin bir tamsayıya ihtiyaç duymayacağını unutmayın. Harita tarafından izin verilen yakınlaştırma seviyeleri, konum, harita tipi ve ekran boyutu dahil olmak üzere faktörlerine bağlıdır. camera için yakınlaştırma şamandıra iken GMSTileLayer için

yakınlaştırma NSUIntegerolduğunu.GMSTileLayer için yakınlaştırma karo sayısını belirlemek için kullanılır. Kamera için zoom nokta sayısını 256 * 2N formülüne göre belirlemek için kullanılır.

Yanılıyor olabilirim, ancak her iki yakınlaştırma düzeyi de eşleşmeyecek.

Çok ilgili değil: Google, GMSTileLayer ile ilgili bir sorunu çözen ve ayrıca bir kilitlenme de çözen iOS Haritalar SDK V1.8.1 sürümünü yayınladı.

+0

.... Google'ın şu anda bu sorunları çözüp çözmediğini biliyor muydunuz? – user836026