2012-03-28 6 views
1

国名の配列があり、目印としてMKMapViewに配置したいと考えています。たとえば、フランスがcountryName配列にある場合、私はフランスの中心にピンを配置したいと思います。MKMapView名前を使用している国にピンを配置する

各国の緯度経度を保存せずにこれを行う方法はありますか?

私はこの作品をオフラインにして、世界の最も基本的で完全にズームアウトされた画像でのみ地図を必要とします。

私はMKMapViewがいくつかの基本的な地理情報を保持していると信じていますので、GLGeocoderとインターネット接続を使わずに上記のことが可能ですか?

+0

組み込みのMKMapViewはオフラインでは動作しません。インターネットに接続していない場合、地図のオーバーレイに基本的な世界地図を追加するのが簡単です。 –

+0

@NielsCastle iPadを飛行機モードにしてから、MKMapViewを追加したViewControllerをロードすると、基本的な世界地図が表示されますが、ズームを無効にしたいときにはズームインしてもデータは取得されません。私が見るものがキャッシュされたデータでない限り? –

+0

トップレベルマップが常に利用可能であることを保証する特殊なケースがあるのか​​どうかはわかりませんが、ドキュメント内でそれを参照することはできません。私はそれに頼ることを躊躇するだろう。 –

答えて

3

あなたが唯一の国の名前を使用するならば、我々はその国のために長い緯度NAGセンターを得る:-(アドレスの取得の緯度と経度のために、この機能を試してみてください)

-(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を取得した後)使用)

3領域

にmapKitフレームワークにこの機能を

3)セットの緯度と経度を使用する追加

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id)annotation 
+0

返信いただきありがとうございますが、この方法ではインターネット接続を使用して検索を行います。 CLLocationCoordinate2D内でlat&longを設定するのに役立ちました –

+0

ありがとうございます – Deepesh

1

このメソッドは、データファイル(sqlite)をアプリケーションに格納し、ピンをマップに配置するときにデータベースにクエリを送信しない限り機能しません。しかし、それはオフラインモードで地図データの可用性を保証します。あなたはsqliteのファイルをインポートした後.loadshpコマンドを使用してsqliteのファイルとして利用できる

基本的にシェイプファイルを利用することができます http://thematicmapping.org/downloads/world_borders.php

インポートそれは http://www.gaia-gis.it/gaia-sins/spatialite-tutorial-2.3.1.html

を説明し、あなただけの何かを照会することができます以下のような

select lon,lat from world_borders where name like 'Zambia'; 

lon = longitude, 
lat = latitude, 
world_borders = table name 
and 'Zambia' = country name. 
+0

問題を解決するために、ファイルをsqliteファイルにインポートしました https://github.com/nhisyam/World-Borders – nhisyam

+0

多くの感謝、これは実際に私の質問に答えるのではなく、大きな助けとなります。これは、私にも完全な国リストと関連する緯度/経度を私にも与えてくれます。 :) –

+0

喜んでそれが役立ちます。 =) – nhisyam

関連する問題