一个图表库,用于在地图上可视化数据。它就像地理图,但适用于iOS!
该库背后的想法是加载地图的SVG文件并在视图中简单地显示它。在此基础上,您可以知道何时点击特定的区域。
请注意,SVG加载相当简单,不支持SVG文件格式的所有功能。它对我来说足够好了,可以显示我在SVG中找到的大部分地图!
FSInteractiveMap是UIView的子类,因此它可以作为常规视图添加。它基本上是从SVG文件加载地图。默认有一些,但您可以添加任何喜欢的SVG。
NSDictionary* data = @{ @"asia" : @12,
@"australia" : @2,
@"north_america" : @5,
@"south_america" : @14,
@"africa" : @5,
@"europe" : @20
};
FSInteractiveMapView* map = [[FSInteractiveMapView alloc] initWithFrame:self.view.frame];
[map loadMap:@"world-continents-low" withData:data colorAxis:@[[UIColor lightGrayColor], [UIColor darkGrayColor]]];
[map setClickHandler:^(NSString* identifier, CAShapeLayer* layer) {
self.detailDescriptionLabel.text = [NSString stringWithFormat:@"Continent clicked: %@", identifier];
}];
“可点击”地图的示例
FSInteractiveMapView* map = [[FSInteractiveMapView alloc] initWithFrame:CGRectMake(16, 96, self.view.frame.size.width - 32, 500)];
[map loadMap:@"usa-low" withColors:nil];
[map setClickHandler:^(NSString* identifier, CAShapeLayer* layer) {
if(_oldClickedLayer) {
_oldClickedLayer.zPosition = 0;
_oldClickedLayer.shadowOpacity = 0;
}
_oldClickedLayer = layer;
// We set a simple effect on the layer clicked to highlight it
layer.zPosition = 10;
layer.shadowOpacity = 0.5;
layer.shadowColor = [UIColor blackColor].CGColor;
layer.shadowRadius = 5;
layer.shadowOffset = CGSizeMake(0, 0);
}];
您可以在一些地方找到适合FSInteractiveMap的SVG文件。以下是简短列表: