我有一系列国家/地区名称,并希望将它们作为地标放置在MKMapView上。因此,例如,如果法国位于countryName数组中,我希望将一个引脚放在法国中心。
有没有办法在不为每个国家/地区存储lat / long的情况下执行此操作?
我想让这项工作脱机,并且只需要地图中最基本且完全缩小的世界图像。
我相信MKMapView拥有一些基本的地理信息,所以在不使用GLGeocoder和互联网连接的情况下可以实现上述目的吗?
答案 0 :(得分:3)
尝试此功能获取地址的纬度和经度:-(如果您只使用国家/地区名称,那么我们会为该国家/地区获得中心拉特唠叨)
-(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) countryStr {
NSString *urlAddressStr = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv",
[countryStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *locationStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlAddressStr]];
NSArray *items = [locationStr componentsSeparatedByString:@","];
double lat = 0.0;
double long = 0.0;
if([items count] >= 4 && [[items objectAtIndex:0] isEqualToString:@"200"])
{
lat = [[items objectAtIndex:2] doubleValue];
long = [[items objectAtIndex:3] doubleValue];
}
CLLocationCoordinate2D location;
location.latitude = lat;
location.longitude = long;
return location;
}
经过纬度和经度后1)添加使用mapKit Framework
3)在区域
上设置纬度和经度3)使用此功能
- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id )annotation
答案 1 :(得分:1)
除非将数据文件(sqlite)存储到应用程序中并在将引脚放入地图时查询数据库,否则此方法将无法工作。但它将保证离线模式下的地图数据可用性。
基本上您可以使用可用的形状文件 http://thematicmapping.org/downloads/world_borders.php
使用所述的.loadshp命令将其导入为sqlite文件 http://www.gaia-gis.it/gaia-sins/spatialite-tutorial-2.3.1.html
导入sqlite文件后,您只需查询类似
的内容即可select lon,lat from world_borders where name like 'Zambia';
其中
lon = longitude,
lat = latitude,
world_borders = table name
and 'Zambia' = country name.