如何在加载新的 NSURL 时删除 NSURL
How to remove NSURL when a new NSURL is loaded
我在该列表中弹出了 11 个不同的地图图层,我希望它在选择新图层时删除之前选择的图层。我应该怎么做。我有一个 if 语句将引用 url 更改为新层。
这是代码:
-(void) didLoadSelectedLayer:(NSString *)selectedLayer{
//Array of all the map layers
self.popOverArray = [[NSArray alloc] initWithObjects:@"Electric Radio", @"Electric Truck", @"Gas Radio", @"Gas Truck", @"Meter", @"Sewer Radio", @"Sewer Truck", @"Support Radio", @"Support Truck", @"Water Radio", @"Water Truck", nil];
//Load layers based on selected cell
if ([selectedLayer isEqualToString:@"Electric Radio"]) {
_url = [NSURL URLWithString:@"https://example.com./0"];
}else if ([selectedLayer isEqualToString:@"Electric Truck"]){
_url = [NSURL URLWithString:@"https://example.com/1"];
}else if ([selectedLayer isEqualToString:@"Gas Radio"]){
_url = [NSURL URLWithString:@"https://example.com/2"];
}else if ([selectedLayer isEqualToString:@"Gas Truck"]){
_url = [NSURL URLWithString:@"https://example.com/2"];
}else if ([selectedLayer isEqualToString:@"Meter"]){
_url = [NSURL URLWithString:@"example.com/4"];
}else if ([selectedLayer isEqualToString:@"Sewer Radio"]){
_url = [NSURL URLWithString:@"example.com/5"];
}else if ([selectedLayer isEqualToString:@"Sewer Truck"]){
_url = [NSURL URLWithString:@"https://eample.com/6"];
}else if ([selectedLayer isEqualToString:@"Support Radio"]){
_url = [NSURL URLWithString:@"https://example.com/7"];
}else if ([selectedLayer isEqualToString:@"Support Truck"]){
_url = [NSURL URLWithString:@"https://example.com/8"];
}else if ([selectedLayer isEqualToString:@"Water Radio"]){
_url = [NSURL URLWithString:@"https://example.com/9"];
}else if ([selectedLayer isEqualToString:@"Water Truck"]){
_url = [NSURL URLWithString:@"https://example.com/10"];
}else {
}
//Load the Selected layer to map view
_graphicsLayer = [AGSGraphicsLayer graphicsLayer];
[self.mapView addMapLayer:_graphicsLayer withName:@"Graphics Layer"];
AGSCredential *userCred = [[AGSCredential alloc] initWithUser:@"username" password:@"password"];
AGSFeatureLayer *featrueServiceLayer = [[AGSFeatureLayer alloc] initWithURL:_url mode:AGSFeatureLayerModeOnDemand credential:userCred];
[featrueServiceLayer setOutFields:[NSArray arrayWithObject:@"*"]];
featrueServiceLayer.editingDelegate = self;
[self.mapView addMapLayer:featrueServiceLayer withName:@"featureService"];
}
添加图形层后创建一个 if 语句以查看是否已添加图形层,如果为真则移除图形层,然后移除要素服务。
_graphicsLayer = [AGSGraphicsLayer graphicsLayer];
if ([_graphicsLayer graphics]) {
[_graphicsLayer removeAllGraphics];
[self.mapView removeMapLayerWithName:@"featureService"];
}
我在该列表中弹出了 11 个不同的地图图层,我希望它在选择新图层时删除之前选择的图层。我应该怎么做。我有一个 if 语句将引用 url 更改为新层。 这是代码:
-(void) didLoadSelectedLayer:(NSString *)selectedLayer{
//Array of all the map layers
self.popOverArray = [[NSArray alloc] initWithObjects:@"Electric Radio", @"Electric Truck", @"Gas Radio", @"Gas Truck", @"Meter", @"Sewer Radio", @"Sewer Truck", @"Support Radio", @"Support Truck", @"Water Radio", @"Water Truck", nil];
//Load layers based on selected cell
if ([selectedLayer isEqualToString:@"Electric Radio"]) {
_url = [NSURL URLWithString:@"https://example.com./0"];
}else if ([selectedLayer isEqualToString:@"Electric Truck"]){
_url = [NSURL URLWithString:@"https://example.com/1"];
}else if ([selectedLayer isEqualToString:@"Gas Radio"]){
_url = [NSURL URLWithString:@"https://example.com/2"];
}else if ([selectedLayer isEqualToString:@"Gas Truck"]){
_url = [NSURL URLWithString:@"https://example.com/2"];
}else if ([selectedLayer isEqualToString:@"Meter"]){
_url = [NSURL URLWithString:@"example.com/4"];
}else if ([selectedLayer isEqualToString:@"Sewer Radio"]){
_url = [NSURL URLWithString:@"example.com/5"];
}else if ([selectedLayer isEqualToString:@"Sewer Truck"]){
_url = [NSURL URLWithString:@"https://eample.com/6"];
}else if ([selectedLayer isEqualToString:@"Support Radio"]){
_url = [NSURL URLWithString:@"https://example.com/7"];
}else if ([selectedLayer isEqualToString:@"Support Truck"]){
_url = [NSURL URLWithString:@"https://example.com/8"];
}else if ([selectedLayer isEqualToString:@"Water Radio"]){
_url = [NSURL URLWithString:@"https://example.com/9"];
}else if ([selectedLayer isEqualToString:@"Water Truck"]){
_url = [NSURL URLWithString:@"https://example.com/10"];
}else {
}
//Load the Selected layer to map view
_graphicsLayer = [AGSGraphicsLayer graphicsLayer];
[self.mapView addMapLayer:_graphicsLayer withName:@"Graphics Layer"];
AGSCredential *userCred = [[AGSCredential alloc] initWithUser:@"username" password:@"password"];
AGSFeatureLayer *featrueServiceLayer = [[AGSFeatureLayer alloc] initWithURL:_url mode:AGSFeatureLayerModeOnDemand credential:userCred];
[featrueServiceLayer setOutFields:[NSArray arrayWithObject:@"*"]];
featrueServiceLayer.editingDelegate = self;
[self.mapView addMapLayer:featrueServiceLayer withName:@"featureService"];
}
添加图形层后创建一个 if 语句以查看是否已添加图形层,如果为真则移除图形层,然后移除要素服务。
_graphicsLayer = [AGSGraphicsLayer graphicsLayer];
if ([_graphicsLayer graphics]) {
[_graphicsLayer removeAllGraphics];
[self.mapView removeMapLayerWithName:@"featureService"];
}