ios 地图选择城市

ios 地图选择城市 切换城市,点击城市按钮设置城市

效果图

效果图

实现思路

1.获取数据

1.拖出一个UItextView在他的文本框中输入城市信息
效果图
2.拖出这个textView的输出口并获得并处理他的数据他的数据存储到NSUserDefaults中

//输出口
@property (weak, nonatomic) IBOutlet UITextView *cityListTextView;


//传入汉字字符串, 返回拼音首字母,用以首字母分类城市列表
- (NSString *)firstCharactor:(NSString *)aString
{
    NSMutableString *str = [NSMutableString stringWithString:aString];
    CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
    CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
    NSString *pinYin = [str capitalizedString];
    return [pinYin substringToIndex:1];
}
//存储数据
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
    
    NSMutableDictionary *cityMap = (NSMutableDictionary *)[userDefault objectForKey:@"xmcityMap"];
    NSMutableArray *cityList = [[NSMutableArray alloc] init];
    if (cityMap == nil || [cityMap count] == 0) {
        NSArray *cityListData = [self.cityListTextView.text componentsSeparatedByString:@"\n"];
        cityMap = [[NSMutableDictionary alloc] initWithDictionary:@{@"A":[[NSMutableArray alloc] init],@"B":[[NSMutableArray alloc] init],@"C":[[NSMutableArray alloc] init],@"D":[[NSMutableArray alloc] init],@"E":[[NSMutableArray alloc] init],@"F":[[NSMutableArray alloc] init],@"G":[[NSMutableArray alloc] init],@"H":[[NSMutableArray alloc] init],@"J":[[NSMutableArray alloc] init],@"K":[[NSMutableArray alloc] init],@"L":[[NSMutableArray alloc] init],@"M":[[NSMutableArray alloc] init],@"N":[[NSMutableArray alloc] init],@"P":[[NSMutableArray alloc] init],@"Q":[[NSMutableArray alloc] init],@"R":[[NSMutableArray alloc] init],@"S":[[NSMutableArray alloc] init],@"T":[[NSMutableArray alloc] init],@"W":[[NSMutableArray alloc] init],@"X":[[NSMutableArray alloc] init],@"Y":[[NSMutableArray alloc] init],@"Z":[[NSMutableArray alloc] init]}];
        for (NSString *cityName in cityListData) {
            
            if (cityName == nil || [@"" isEqualToString:cityName]) {
                continue;
            }
            [cityList addObject:cityName];
            NSString *initials = [self firstCharactor:cityName];
            if ([[cityMap allKeys] containsObject:initials]) {
                NSMutableArray *array = (NSMutableArray *)[cityMap objectForKey:initials];
                [array addObject:cityName];
                [cityMap setValue:array forKey:initials];
            }else{
                NSMutableArray *array = [[NSMutableArray alloc] init];
                [array addObject:cityName];
                [cityMap setValue:array forKey:initials];
            }
            
        }
        //存储所有城市列表
        [userDefault setObject:cityList forKey:@"xmcityList"];
        //存储所有首字母映射的字典
        [userDefault setObject:cityMap forKey:@"xmcityMap"];
        [userDefault synchronize];
    }


2.通过刚刚获得的数据现在来进行选择城市的功能实现

控制器结构
效果图
代码部分

行内嵌入的表格类

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface XMSwitchCityCollectionView : UICollectionView

@property (nonatomic) NSInteger indexRow;

@end

NS_ASSUME_NONNULL_END

#import "XMSwitchCityCollectionView.h"

@implementation XMSwitchCityCollectionView

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end


#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface XMSwitchCityCollectionViewCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *cityName;

@end

NS_ASSUME_NONNULL_END


#import "XMSwitchCityCollectionViewCell.h"

@implementation XMSwitchCityCollectionViewCell

@end




表格行

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface SwitchCityTitleTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *titleName;

@end

NS_ASSUME_NONNULL_END


#import "SwitchCityTitleTableViewCell.h"

@implementation SwitchCityTitleTableViewCell

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end



#import <UIKit/UIKit.h>
#import "XMSwitchCityCollectionView.h"
NS_ASSUME_NONNULL_BEGIN

@interface SwitchCityShowCityTableViewCell : UITableViewCell

@property (weak, nonatomic) IBOutlet XMSwitchCityCollectionView *swtichCityCollectionView;

@end

NS_ASSUME_NONNULL_END



#import "SwitchCityShowCityTableViewCell.h"

@implementation SwitchCityShowCityTableViewCell

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

主体类

#import <UIKit/UIKit.h>
#import "SwitchCityTitleTableViewCell.h"
#import "SwitchCityShowCityTableViewCell.h"
#import "XMSwitchCityCollectionView.h"
#import "XMSwitchCityCollectionViewCell.h"

@interface XMSwitchCityViewController : UIViewController

@property (strong,nonatomic) NSMutableDictionary *cityMap;
@property (strong,nonatomic) NSArray *cityMapKeyList;

@property (weak, nonatomic) IBOutlet UISearchBar *switchCitySearchBar;
@property (strong,nonatomic) NSArray *hotCityList;

@property (nonatomic) BOOL isSearch;

@property (strong,nonatomic) NSArray *searchCityList;

@property (weak, nonatomic) IBOutlet UITableView *switchCityTableView;



@end

#import "XMSwitchCityViewController.h"

@interface XMSwitchCityViewController ()<UITableViewDelegate,UICollectionViewDelegate,UISearchBarDelegate>

@end

@implementation XMSwitchCityViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.switchCitySearchBar setDelegate:self];
    
    self.cityMap = [[NSUserDefaults standardUserDefaults] objectForKey:@"xmcityMap"];
    
    NSArray *allKeyArray = [self.cityMap allKeys];
    
    self.hotCityList = @[@"北京市",@"上海市",@"深圳市"];
    
    //序列化器对数组进行排序的block 返回值为排序后的数组
    NSArray *afterSortKeyArray = [allKeyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id
     _Nonnull obj2) {
        NSComparisonResult resuest = [obj1 compare:obj2];
        return resuest;
    }];
    
    for (NSString * key in afterSortKeyArray) {
        NSLog(@"%@",key);
    }
    self.cityMapKeyList = afterSortKeyArray;
    
    self.switchCityTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    // Do any additional setup after loading the view.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if (self.isSearch) {
        return 2;
    }
    return [self.cityMap allKeys].count*2 + 4;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.row == 0) {
        return 50;
    }else if (indexPath.row == 1) {
        return 80;
    }else if (indexPath.row == 2) {
        return 50;
    }else if (indexPath.row == 3) {
        return 80;
    }else if (indexPath.row % 2 == 0) {
        return 50;
    }else{
        NSInteger rowCount = self.view.frame.size.width/95;
        NSInteger lineCount= (ceil)([[self.cityMap objectForKey:[NSString stringWithFormat:@"%@",(NSString *)self.cityMapKeyList[(indexPath.row - 4)/2]]] count]/1.0/rowCount);
        return 30 + lineCount * 50 + (lineCount-1)*10;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    
    if (indexPath.row == 0) {
        SwitchCityTitleTableViewCell *cell =(SwitchCityTitleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SwitchCityTitleTableViewCell" forIndexPath:indexPath];
        [cell.titleName setText:@"定位城市"];
        if (self.isSearch) {
            [cell.titleName setText:@"搜索结果"];
        }
         // [cell addSubview:lable];
          cell.layer.cornerRadius = 8;
          cell.selectionStyle = UITableViewCellSelectionStyleNone;
          return cell;
    }else if (indexPath.row == 1) {
        SwitchCityShowCityTableViewCell *cell =(SwitchCityShowCityTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SwitchCityShowCityTableViewCell" forIndexPath:indexPath];
          [cell.swtichCityCollectionView setIndexRow:indexPath.row];
          cell.layer.cornerRadius = 8;
          cell.selectionStyle = UITableViewCellSelectionStyleNone;
          [cell.swtichCityCollectionView setFrame:CGRectMake(0, 0, 120, 80)];
          [cell.swtichCityCollectionView reloadData];
          return cell;
    }else if (indexPath.row == 2) {
        SwitchCityTitleTableViewCell *cell =(SwitchCityTitleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SwitchCityTitleTableViewCell" forIndexPath:indexPath];
          [cell.titleName setText:@"热门城市"];
         // [cell addSubview:lable];
          cell.layer.cornerRadius = 8;
          cell.selectionStyle = UITableViewCellSelectionStyleNone;
          return cell;
    }else if (indexPath.row == 3) {
        SwitchCityShowCityTableViewCell *cell =(SwitchCityShowCityTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SwitchCityShowCityTableViewCell" forIndexPath:indexPath];

          [cell.swtichCityCollectionView setIndexRow:indexPath.row];
          cell.layer.cornerRadius = 8;
          cell.selectionStyle = UITableViewCellSelectionStyleNone;
          [cell.swtichCityCollectionView setFrame:cell.contentView.frame];
          [cell.swtichCityCollectionView reloadData];
          return cell;
    }else if (indexPath.row % 2 == 0) {
        SwitchCityTitleTableViewCell *cell =(SwitchCityTitleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SwitchCityTitleTableViewCell" forIndexPath:indexPath];
        
          [cell.titleName setText:[NSString stringWithFormat:@"%@",(NSString *)self.cityMapKeyList[(indexPath.row - 4)/2]]];
          cell.layer.cornerRadius = 8;
          cell.selectionStyle = UITableViewCellSelectionStyleNone;
          return cell;
    }else{
        SwitchCityShowCityTableViewCell *cell =(SwitchCityShowCityTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SwitchCityShowCityTableViewCell" forIndexPath:indexPath];
          [cell.swtichCityCollectionView setIndexRow:indexPath.row];
          cell.layer.cornerRadius = 8;
          cell.selectionStyle = UITableViewCellSelectionStyleNone;
          [cell.swtichCityCollectionView setFrame:cell.contentView.frame];
          [cell.swtichCityCollectionView reloadData];
          return cell;
    }

}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

//collectionView代理方法
#pragma mark - 代理方法 Delegate Methods
// 设置分区

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}
#pragma mark - UICollectionViewDataSource
// 每个分区上得元素个数
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    
    if (self.isSearch) {
        return self.searchCityList.count;
    }
    
    XMSwitchCityCollectionView *xmSwitchCityCollectionView = (XMSwitchCityCollectionView *)collectionView;
    if (xmSwitchCityCollectionView.indexRow == 1) {
        return 1;
    } else if (xmSwitchCityCollectionView.indexRow == 3) {
        return 3;
    } else if (xmSwitchCityCollectionView.indexRow % 2 == 1) {
         return [[self.cityMap objectForKey:[NSString stringWithFormat:@"%@",(NSString *)self.cityMapKeyList[(xmSwitchCityCollectionView.indexRow - 4)/2]]] count];
    }
    return 0;
}

#pragma mark - UICollectionViewDelegateFlowLayout
// 设置cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    XMSwitchCityCollectionViewCell *cell =(XMSwitchCityCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"XMSwitchCityCollectionViewCell" forIndexPath:indexPath];

    if (self.isSearch) {
        [cell.cityName setText:self.searchCityList[0]];
        return cell;
    }
    
    XMSwitchCityCollectionView *xmSwitchCityCollectionView = (XMSwitchCityCollectionView *)collectionView;
    
    if (xmSwitchCityCollectionView.indexRow == 1) {
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [cell.cityName setText:[userDefaults objectForKey:@"locationAddress"]];
    } else if (xmSwitchCityCollectionView.indexRow == 3) {
        [cell.cityName setText:self.hotCityList[indexPath.row]];
    } else if (xmSwitchCityCollectionView.indexRow % 2 == 1) {
        [cell.cityName setText:((NSMutableArray *)[self.cityMap objectForKey: [NSString stringWithFormat:@"%@",(NSString *)self.cityMapKeyList[(xmSwitchCityCollectionView.indexRow - 4)/2]]])[indexPath.row]];
    }
    return cell;
}

// 设置cell大小 itemSize:可以给每一个cell指定不同的尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    return CGSizeMake(90, 50);
}

//点击市名存储选择的市
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    
    XMSwitchCityCollectionViewCell *xmSwitchCityCollectionViewCell = (XMSwitchCityCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:xmSwitchCityCollectionViewCell.cityName.text forKey:@"currentAddress"];
    
    //跳转回需要设置城市的页面用"currentAddress"进行设置,我这里注释了,正常运行   给viewController设置id就能跳转了 
    /*
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"IndexPageVc"]; 
    [self.view.window setRootViewController:vc];
    */
    
}


//搜索代理方法

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{

    return YES;
}

// 当搜索内容变化时,执行该方法。很有用,可以实现时实搜索
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    self.isSearch = true;
    if (self.isSearch) {
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray *cityList = (NSMutableArray *)[userDefaults objectForKey:@"xmcityList"];
        if (searchText == nil || [@""isEqualToString:searchText]) {
            self.isSearch = NO;
        } else if ([cityList containsObject:searchText]) {
            self.searchCityList = @[searchText];
        } else {
            self.searchCityList = [[NSArray alloc] init];
        }
        [self.switchCityTableView reloadData];
    }
}
// 键盘中,搜索按钮被按下,执行的方法
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{

}

@end



城市列表

北京市
天津市
石家庄市
辛集市
晋州市
新乐市
唐山市
滦州市
遵化市
迁安市
秦皇岛市
邯郸市
武安市
邢台市
南宫市
沙河市
保定市
涿州市
定州市
安国市
高碑店市
张家口市
承德市
平泉市
沧州市
泊头市
任丘市
黄骅市
河间市
廊坊市
霸州市
三河市
衡水市
深州市
太原市
古交市
大同市
阳泉市
长治市
晋城市
高平市
朔州市
怀仁市
晋中市
介休市
运城市
永济市
河津市
忻州市
原平市
临汾市
侯马市
霍州市
吕梁市
孝义市
汾阳市
呼和浩特市
包头市
乌海市
赤峰市
通辽市
霍林郭勒市
鄂尔多斯市
呼伦贝尔市
满洲里市
牙克石市
扎兰屯市
额尔古纳市
根河市
巴彦淖尔市
乌兰察布市
丰镇市
乌兰浩特市
阿尔山市
二连浩特市
锡林浩特市
沈阳市
新民市
大连市
瓦房店市
庄河市
鞍山市
海城市
抚顺市
本溪市
丹东市
东港市
凤城市
锦州市
凌海市
北镇市
营口市
盖州市
大石桥市
阜新市
辽阳市
灯塔市
盘锦市
铁岭市
调兵山市
开原市
朝阳市
北票市
凌源市
葫芦岛市
兴城市
长春市
榆树市
德惠市
吉林市
蛟河市
桦甸市
舒兰市
磐石市
四平市
公主岭市
双辽市
辽源市
通化市
梅河口市
集安市
白山市
临江市
松原市
扶余市
白城市
洮南市
大安市
延吉市
图们市
敦化市
珲春市
龙井市
和龙市
哈尔滨市
尚志市
五常市
齐齐哈尔市
讷河市
鸡西市
虎林市
密山市
鹤岗市
双鸭山市
大庆市
伊春市
铁力市
佳木斯市
同江市
富锦市
抚远市
七台河市
牡丹江市
绥芬河市
海林市
宁安市
穆棱市
东宁市
黑河市
北安市
五大连池市
绥化市
安达市
肇东市
海伦市
漠河市
上海市
南京市
无锡市
江阴市
宜兴市
徐州市
新沂市
邳州市
常州市
溧阳市
苏州市
常熟市
张家港市
昆山市
太仓市
南通市
海安市
启东市
如皋市
海门市
连云港市
淮安市
盐城市
东台市
扬州市
仪征市
高邮市
镇江市
丹阳市
扬中市
句容市
泰州市
兴化市
靖江市
泰兴市
宿迁市
杭州市
建德市
宁波市
余姚市
慈溪市
温州市
瑞安市
乐清市
嘉兴市
海宁市
平湖市
桐乡市
湖州市
绍兴市
诸暨市
嵊州市
金华市
兰溪市
义乌市
东阳市
永康市
衢州市
江山市
舟山市
台州市
温岭市
临海市
玉环市
丽水市
龙泉市
合肥市
巢湖市
芜湖市
蚌埠市
淮南市
马鞍山市
淮北市
铜陵市
安庆市
潜山市
桐城市
黄山市
滁州市
天长市
明光市
阜阳市
界首市
宿州市
六安市
亳州市
池州市
宣城市
宁国市
福州市
福清市
厦门市
莆田市
三明市
永安市
泉州市
石狮市
晋江市
南安市
漳州市
龙海市
南平市
邵武市
武夷山市
建瓯市
龙岩市
漳平市
宁德市
福安市
福鼎市
南昌市
景德镇市
乐平市
萍乡市
九江市
瑞昌市
共青城市
庐山市
新余市
鹰潭市
贵溪市
赣州市
瑞金市
吉安市
井冈山市
宜春市
丰城市
樟树市
高安市
抚州市
上饶市
德兴市
济南市
青岛市
胶州市
平度市
莱西市
淄博市
枣庄市
滕州市
东营市
烟台市
龙口市
莱阳市
莱州市
蓬莱市
招远市
栖霞市
海阳市
潍坊市
青州市
诸城市
寿光市
安丘市
高密市
昌邑市
济宁市
曲阜市
邹城市
泰安市
新泰市
肥城市
威海市
荣成市
乳山市
日照市
临沂市
德州市
乐陵市
禹城市
聊城市
临清市
滨州市
邹平市
菏泽市
郑州市
巩义市
荥阳市
新密市
新郑市
登封市
开封市
洛阳市
偃师市
平顶山市
舞钢市
汝州市
安阳市
林州市
鹤壁市
新乡市
卫辉市
辉县市
焦作市
沁阳市
孟州市
濮阳市
许昌市
禹州市
长葛市
漯河市
三门峡市
义马市
灵宝市
南阳市
邓州市
商丘市
永城市
信阳市
周口市
项城市
驻马店市
济源市
武汉市
黄石市
大冶市
十堰市
丹江口市
宜昌市
宜都市
当阳市
枝江市
襄阳市
老河口市
枣阳市
宜城市
鄂州市
荆门市
京山市
钟祥市
孝感市
应城市
安陆市
汉川市
荆州市
石首市
洪湖市
松滋市
黄冈市
麻城市
武穴市
咸宁市
赤壁市
随州市
广水市
恩施市
利川市
仙桃市
潜江市
天门市
长沙市
浏阳市
宁乡市
株洲市
醴陵市
湘潭市
湘乡市
韶山市
衡阳市
耒阳市
常宁市
邵阳市
武冈市
岳阳市
汨罗市
临湘市
常德市
津市市
张家界市
益阳市
沅江市
郴州市
资兴市
永州市
怀化市
洪江市
娄底市
冷水江市
涟源市
吉首市
广州市
韶关市
乐昌市
南雄市
深圳市
珠海市
汕头市
佛山市
江门市
台山市
开平市
鹤山市
恩平市
湛江市
廉江市
雷州市
吴川市
茂名市
高州市
化州市
信宜市
肇庆市
四会市
惠州市
梅州市
兴宁市
汕尾市
陆丰市
河源市
阳江市
阳春市
清远市
英德市
连州市
东莞市
中山市
潮州市
揭阳市
普宁市
云浮市
罗定市
南宁市
柳州市
桂林市
荔浦市
梧州市
岑溪市
北海市
防城港市
东兴市
钦州市
贵港市
桂平市
玉林市
北流市
百色市
靖西市
贺州市
河池市
来宾市
合山市
崇左市
凭祥市
海口市
三亚市
三沙市
儋州市
五指山市
琼海市
文昌市
万宁市
东方市
重庆市
成都市
都江堰市
彭州市
邛崃市
崇州市
简阳市
自贡市
攀枝花市
泸州市
德阳市
广汉市
什邡市
绵竹市
绵阳市
江油市
广元市
遂宁市
内江市
隆昌市
乐山市
峨眉山市
南充市
阆中市
眉山市
宜宾市
广安市
华蓥市
达州市
万源市
雅安市
巴中市
资阳市
马尔康市
康定市
西昌市
贵阳市
清镇市
六盘水市
盘州市
遵义市
赤水市
仁怀市
安顺市
毕节市
铜仁市
兴义市
兴仁市
凯里市
都匀市
福泉市
昆明市
安宁市
曲靖市
宣威市
玉溪市
保山市
腾冲市
昭通市
水富市
丽江市
普洱市
临沧市
楚雄市
个旧市
开远市
蒙自市
弥勒市
文山市
景洪市
大理市
瑞丽市
芒市
泸水市
香格里拉市
拉萨市
日喀则市
昌都市
林芝市
山南市
那曲市
西安市
铜川市
宝鸡市
咸阳市
彬州市
兴平市
渭南市
韩城市
华阴市
延安市
汉中市
榆林市
神木市
安康市
商洛市
兰州市
嘉峪关市
金昌市
白银市
天水市
武威市
张掖市
平凉市
华亭市
酒泉市
玉门市
敦煌市
庆阳市
定西市
陇南市
临夏市
合作市
西宁市
海东市
玉树市
格尔木市
德令哈市
茫崖市
银川市
灵武市
石嘴山市
吴忠市
青铜峡市
固原市
中卫市
乌鲁木齐市
克拉玛依市
吐鲁番市
哈密市
昌吉市
阜康市
博乐市
阿拉山口市
库尔勒市
阿克苏市
阿图什市
喀什市
和田市
伊宁市
奎屯市
霍尔果斯市
塔城市
乌苏市
阿勒泰市
石河子市
阿拉尔市
图木舒克市
五家渠市
北屯市
铁门关市
双河市
可克达拉市
昆玉市
香港特别行政区
澳门特别行政区
发布了7 篇原创文章 · 获赞 4 · 访问量 300

猜你喜欢

转载自blog.csdn.net/qq_41586150/article/details/103891304