GARS iOS
全局区域参考系统库
该 GARS 库是由美国地理空间情报局 (NGA) 与 BIT Systems 合作开发的,目的是通过为开发者提供将事物推向新方向的机会来增加政府投资的效益。"政府拥有无限权利",因此该软件在 MIT 许可协议下发布,其使用、修改和分发权利在 MIT 许可协议中规定。
拉取请求
如果您想为这个项目做出贡献,请发起拉取请求。我们将审查拉取请求并讨论更改。所有对该项目的拉取请求贡献均将在 MIT 许可协议下发布。
软件源代码先前根据开源许可证发布,然后由 NGA 员工修改的,被认为是“联合作品”(见 17 USC § 101);部分版权属部分公共领域,整体受非政府作者的版权保护,必须根据原始开源许可证的条款发布。
关于
GARS 是一个 Swift 库,提供了全局区域参考系统(GARS)功能,这是一个用于区域的标准化地理空间参考系统。《GARS App》是一个使用该库的地图实现。
使用方法
查看最新的 Appledoc
导入
import gars_ios
坐标
let gars = GARS.parse("006AG39")
let point = gars.toPoint()
let pointMeters = point.toMeters()
let latitude = 63.98862388
let longitude = 29.06755082
let point2 = GridPoint(longitude, latitude)
let gars2 = GARS.from(point2)
let garsCoordinate = gars2.description
let gars30m = gars2.coordinate(GridType.THIRTY_MINUTE)
let gars15m = gars2.coordinate(GridType.FIFTEEN_MINUTE)
let gars5m = gars2.coordinate(GridType.FIVE_MINUTE)
瓦片叠加
// let mapView: MKMapView = ...
// Tile size determined from display density
let tileOverlay = GARSTileOverlay()
// Manually specify tile size
let tileOverlay2 = GARSTileOverlay(512, 512)
// Specified grids
let customTileOverlay = GARSTileOverlay(
[GridType.THIRTY_MINUTE, GridType.FIFTEEN_MINUTE])
mapView.addOverlay(tileOverlay)
瓦片叠加选项
let tileOverlay = GARSTileOverlay()
let x = 8
let y = 12
let zoom = 5
// Manually get a tile or draw the tile bitmap
let tile = tileOverlay.tile(x, y, zoom)
let tileImage = tileOverlay.drawTile(x, y, zoom)
let latitude = 63.98862388
let longitude = 29.06755082
let locationCoordinate = CLLocationCoordinate2DMake(latitude, longitude)
// GARS Coordinates
let gars = tileOverlay.gars(locationCoordinate)
let coordinate = tileOverlay.coordinate(locationCoordinate)
let zoomCoordinate = tileOverlay.coordinate(locationCoordinate, zoom)
let gars30m = tileOverlay.coordinate(locationCoordinate, GridType.THIRTY_MINUTE)
let gars15m = tileOverlay.coordinate(locationCoordinate, GridType.FIFTEEN_MINUTE)
let gars5m = tileOverlay.coordinate(locationCoordinate, GridType.FIVE_MINUTE)
自定义网格
let grids = Grids()
grids.deletePropagatedStyles()
grids.disableTypes([GridType.TWENTY_DEGREE, GridType.TEN_DEGREE,
GridType.FIVE_DEGREE, GridType.ONE_DEGREE])
grids.setColor(GridType.THIRTY_MINUTE, UIColor.red)
grids.setWidth(GridType.THIRTY_MINUTE, 4.0)
grids.setMinZoom(GridType.THIRTY_MINUTE, 6)
grids.setLabelMinZoom(GridType.THIRTY_MINUTE, 6)
grids.setLabelTextSize(GridType.THIRTY_MINUTE, 32.0)
grids.setColor(GridType.FIFTEEN_MINUTE, UIColor.blue)
let lessThan15m = GridType.lessPrecise(GridType.FIFTEEN_MINUTE)
grids.setWidth(GridType.FIFTEEN_MINUTE, lessThan15m, 4.0)
grids.setColor(GridType.FIFTEEN_MINUTE, lessThan15m, UIColor.red)
grids.setLabelColor(GridType.FIVE_MINUTE, UIColor.orange)
grids.setLabelBuffer(GridType.FIVE_MINUTE, 0.1)
grids.setWidth(GridType.FIVE_MINUTE, lessThan15m, 4.0)
grids.setColor(GridType.FIVE_MINUTE, lessThan15m, UIColor.red)
grids.setColor(GridType.FIVE_MINUTE, GridType.FIFTEEN_MINUTE, UIColor.blue)
let tileOverlay = GARSTileOverlay(grids)
绘制瓦片模板
// let tile: GridTile = ...
let grids = Grids()
let zoomGrids = grids.grids(tile.zoom)
if zoomGrids.hasGrids() {
for grid in zoomGrids {
let lines = grid.lines(tile)
if lines != nil {
for line in lines! {
let pixel1 = line.point1.pixel(tile)
let pixel2 = line.point2.pixel(tile)
// Draw line
}
}
let labels = grid.labels(tile)
if labels != nil {
for label in labels! {
let pixelRange = label.bounds.pixelRange(tile)
let centerPixel = label.center.pixel(tile)
// Draw label
}
}
}
}
Objective-C
#import "gars_ios-Swift.h"
MKTileOverlay *tileOverlay = [[GARSTileOverlay alloc] init];
[mapView addOverlay:tileOverlay];
构建
使用 Xcode 和/或 CocoaPods 构建此存储库
pod install
在 Xcode 中打开 gars-ios.xcworkspace 或从命令行构建
xcodebuild -workspace 'gars-ios.xcworkspace' -scheme gars-ios build
从 Xcode 或从命令行运行测试
xcodebuild test -workspace 'gars-ios.xcworkspace' -scheme gars-ios -destination 'platform=iOS Simulator,name=iPhone 15'
包含库
通过在 Podfile 中指定以支持选项包含此存储库。
从 CocoaPods 拉取
pod 'gars-ios', '~> 1.1.4'
从 GitHub 拉取
pod 'gars-ios', :git => 'https://github.com/ngageoint/gars-ios.git', :branch => 'master'
pod 'gars-ios', :git => 'https://github.com/ngageoint/gars-ios.git', :tag => '1.1.4'
作为本地项目包含
pod 'gars-ios', :path => '../gars-ios'
远程依赖关系
- Grid(MIT 许可协议)- 网格库
GARS App
GARS App 提供了一个使用此库的全局区域参考系统地图。