Select to view content in your preferred language

How to map  zoom in level?

5806
7
06-26-2010 04:39 PM
ZhaoMingJin
Emerging Contributor
question: the TiledMap have 8 level,but I want only map zoomin 4 level?
How to set?
0 Kudos
7 Replies
JeremyBixby
Regular Contributor
set the currentLevel property on the AGSMapView object to 4.

mapView.currentLevel = 4;
0 Kudos
ZhaoMingJin
Emerging Contributor
set the currentLevel property on the AGSMapView object to 4.

mapView.currentLevel = 4;


SDK:
- (NSInteger) currentLevel [read, assign]
Current level of detail (scale level) displayed by the map.

only read !!!
can't set or write!!
0 Kudos
JeremyBixby
Regular Contributor
Hmm...good point. 

Maybe the easiest thing, would be if ESRI would make that property write-able.

Other than that, you could probably work around it by setting the zoom level on the GPS object (if you have enabled GPS on the device):

 [mapView.gps start];
 mapView.gps.autoPan = YES;
 mapView.gps.zoomLevel = 6;


You could probably also do something like this with generic coordinate assignments:

 AGSEnvelope *myEnvelope = [[AGSEnvelope alloc] initWithXmin:2232848.00 ymin:2232843.00 xmax:233167.00 ymax:251425.00 spatialReference:mapView.spatialReference];
 [mapView zoomToEnvelope:myEnvelope animated:YES];
 
 [myEnvelope release];


There are a few other undocumented methods on the AGSMapView object, which will change your zoomLevel...

[mapView setZoomScale:4.0];
 [mapView setZoomScale:4.0 animated:YES];


This screws up your resolution, though.

My guess is, ESRI wants you to set it through the mapview.gps.zoomlevel property.  Actually, I would be curious to hear ESRI staff weigh in on this, if for no other reason, to hear some of the philosophy behind the ArcGIS iPhone SDK architecture...
0 Kudos
DiveshGoyal
Esri Regular Contributor
Here's how you could zoom to a scale level -


 int levelToZoomTo = 4;
 AGSLOD* lod = [tiledLayer.mapServiceInfo.tileInfo.lods objectAtIndex:levelToZoomTo];
 float zoomFactor = lod.resolution/self.mapView.resolution;
 AGSMutableEnvelope *newEnv =  
    [AGSMutableEnvelope envelopeWithXmin:self.mapView.envelope.xmin
     ymin:self.mapView.envelope.ymin 
     xmax:self.mapView.envelope.xmax 
     ymax:self.mapView.envelope.ymax
     spatialReference:self.mapView.spatialReference];
            
 [newEnv expandByFactor:zoomFactor];
 [self.mapView zoomToEnvelope:newEnv animated:YES];
0 Kudos
KOLDODUARTE
Emerging Contributor
Hi Guys,

I try to zoom in my current location with a custom envelope. I do this envelope with those parameters:

AGSEnvelope *envelopeGPS = [AGSEnvelope envelopeWithXmin:mapView.gps.currentPoint.x    ymin:mapView.gps.currentPoint.y xmax:mapView.gps.currentPoint.x max:mapView.gps.currentPoint.x  spatialReference:self.mapView.spatialReference];  
  
[mapView zoomToEnvelope:envelopeGPS animated:YES];


With this form, the map goes to Africa... it is the center of the map.
I don´t use the autopan property because is too zoom for my base map and I don´t see it.

Best regards,
Koldo.
0 Kudos
HarikantJammi
Emerging Contributor
This is what i use , without forming an envelope

[self.mapView centerAtPoint:((AGSPoint *)(graphic.geometry)) animated:YES];
  NSArray * lodsArray = self.worldTopoMapService.tileInfo.lods ;
//topomap service is AGSTiledMapServicelayer
  AGSLOD * finalLOD = [lodsArray objectAtIndex:5] ;
// 5 is the tile level to zoom to 
  while (self.mapView.mapScale >= finalLOD.scale) {
   [self.mapView zoomIn:YES] ;
  }

 
 
 

  [self.mapView showCalloutAtPoint:(AGSPoint *) graphic.geometry forGraphic:graphic] ;
0 Kudos
KOLDODUARTE
Emerging Contributor
This is what i use , without forming an envelope

[self.mapView centerAtPoint: ((AGSPoint *)(graphic.geometry)) animated:YES];
  NSArray * lodsArray = self.worldTopoMapService.tileInfo.lods ;
//topomap service is AGSTiledMapServicelayer
  AGSLOD * finalLOD = [lodsArray objectAtIndex:5] ;
// 5 is the tile level to zoom to 
  while (self.mapView.mapScale >= finalLOD.scale) {
   [self.mapView zoomIn:YES] ;
  }

  [self.mapView showCalloutAtPoint: (AGSPoint *) graphic.geometry forGraphic:graphic] ;


Hi harikant_jammi,

Please, can you tell me what is "self.worldTopoMapService" and "graphic", because I don´t have those objects in my project, thanks!

BR,
Koldo.
0 Kudos