Sto cercando di disegnare una sovrapposizione personalizzata su Google Maps per iOS utilizzando GMSTileURLConstructor
.GMSTileURLConstructor restituisce strani dati per lo zoom
Sto usando il seguente codice per ottenere il mio URL
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];
};
Quando annoto l'URL, zoom e zoomLevel ottengo le seguenti informazioni:
2014-05-16 17:25:15.621 Application[24491:61003] url -> <BASEURL>/16/9/19/159786_195303.png/zoom 19/19
Allo stesso tempo, , Sto registrando lo zoom della fotocamera quando cambia la fotocamera
- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {
zoomLevelLabel.text = [NSString stringWithFormat:@"ZL: %.2f",position.zoom];
NSLog(@"camera changed - zoom %f",position.zoom);
[self hideMarkersBasedOnZoom:position.zoom];
if(position.zoom > 21) {
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:position.target.latitude longitude:position.target.longitude zoom:21];
[mapView_ setCamera:camera];
}
}
che registra
2014-05-16 17:25:15.640 Application[24491:60b] camera changed - zoom 18.022364
Qualcuno può spiegare la discrepanza in termini di valore livello di zoom e come ce l'ha abbinare in modo appropriato?
Quale versione di Google Map SDK in uso? 1.8.0 o 1.7.2? – Ricky
Sembra 1.7.2. – Jeremy1026
Hai mai risolto questo? – funkybro