2012-03-20 67 views
6

iOS Developer Library位置感知編程指南的Displaying Overlays on a Map部分中,有一個示例「顯示覆蓋科羅拉多州的填充和描邊覆蓋圖」。美國所有州的iOS覆蓋(MKPolygon)數據?

// Define an overlay that covers Colorado. 
CLLocationCoordinate2D points[4]; 

points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116); 
points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066); 
points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981); 
points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267); 

MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4]; 
poly.title = @"Colorado"; 

[map addOverlay:poly]; 

問題 有座標使用該相同的緯度/經度數據容易且自由地可用的所有美國50個州的數據的源?

回答

8

然谷歌搜索我們國家大綱地理座標,發現問題計算器Geographical boundaries of states/provinces -> Google Maps Polygon,其中有一個答案(以下科羅拉多州的數據)鏈接到XML for US state polygons

<state name="Colorado" colour="#880000"> 
    <point lat="37.0004" lng="-109.0448"/> 
    <point lat="36.9949" lng="-102.0424"/> 
    <point lat="41.0006" lng="-102.0534"/> 
    <point lat="40.9996" lng="-109.0489"/> 
    <point lat="37.0004" lng="-109.0448"/> 
</state> 

我還發現US State and Country border coordinates一個鏈接到NationalAtlas.com, First Level Administrative Boundaries (States), United States, 2005,但這些數據看起來更精確的比我更需要。

數據的另一個來源是The State Border Data Set,它鏈接到具有「組成州邊界的線段的地理座標」的文件(下面的科羅拉多數據)。

bordindx, st1st2, milemark, lat, long, st1, st2, 
19 ,CO-NE ,0 ,40.003 ,102.051 ,08 ,31 , 
19 ,CO-NE ,68.95 ,41.002 ,102.051 ,08 ,31 , 
19 ,CO-NE ,173.19 ,41.001 ,104.053 ,08 ,31 , 
20 ,CO-NM ,0 ,36.999 ,109.044 ,08 ,35 , 
20 ,CO-NM ,333 ,37 ,103.001 ,08 ,35 , 
21 ,CO-OK ,0 ,37 ,103.001 ,08 ,40 , 
21 ,CO-OK ,52.89 ,36.993 ,102.041 ,08 ,40 , 
22 ,CO-UT ,0 ,41 ,109.049 ,08 ,49 , 
22 ,CO-UT ,276.11 ,36.999 ,109.044 ,08 ,49 , 
23 ,CO-WY ,0 ,41.001 ,104.053 ,08 ,56 , 
23 ,CO-WY ,260.18 ,41 ,109.049 ,08 ,56 , 

更新:我把states.xml的精緻版,以及Objective-C代碼在kjhsoftware/us-state-polygons GitHub庫。

+2

使用其中的一部分,我創建了一個覆蓋層示例項目:https://github.com/HunterHillegas/MapKitUSA – Hunter 2012-09-21 17:00:38