mapkit」カテゴリーアーカイブ

MapKit(swift4)

平成30年8月20日(月曜日)

objective-c版 stackview設定
Add views in UIStackView programmatically

平成30年7月24日(火曜日)

detailCalloutAccessoryView要調査!!

平成30年7月15日(日曜日)

色分け設定(白背景、文字赤)、menuviewテーブル(市町村別、セクション別)表示、タップ対応、itembutton押下まで動作完了。

平成30年7月14日(土曜日)

試行の結果、クラスタリング不使用、MKMarkerAnnotationView使用(理由は、マーカーに文字表示可能なこと、更に色分けすれば、視認性向上による)
本日ここまで、これをベースに更に深化予定。

平成30年7月13日(金曜日)

MKMarkerAnnotationViewによる、おでかけスポット表示、骨格はほぼ完了!!
残るは、sectionによる色分け表示(markerTintColor、glyphTintColor)、coredata predicate関係、写真、詳細画面表示など。

平成30年7月12日(木曜日)

MKMarkerAnnotationViewについて、ひとまず完了!!

MKMarkerAnnotationView –> Tips
順序
MKAnnotation、更にMKAnnotationView
必要なパラメーターは、MKAnnotation作成時点で渡すこと。(MKAnnotationView内で設定)

MKAnnotation
① マーカー表示のみであれば、coordinateのみでOK!!
② calloutする場合は、最低限、titleが必要(更に詳細があれば、subutitleまで)

MKMarkerAnnotationView
markerTintColor(マーカー色 丸いマーカーのこと)
glyphTintColor(glyphTextの色、glyphImageは変化しない。)
glyphText(日本語漢字表示で二文字まで実用可)
glyphImage(= UIImage(named: “hotspring.png”))
↑を表示するには、glyphTextを設定しないこと。
又、glyphImageは詳細表示ではなく、輪郭が表示されるのみ。。

①②③④を使い分ければ、識別可能か!!

残るは、detailの複数行表示!!(以下の最後のもので解決)
how to show multiple lines in MKAnnotation with autolayout?

leftCalloutAccessoryViewについて、以下の最後のもので解決
MapKit iOS 9 detailCalloutAccessoryView usage
更にサイズ調整!!(但し、縮小されて見づらい、icon表示サイズ)
Resizing image to fit in MapView’s leftCalloutAccessoryView

平成30年7月11日(水曜日)

未確認リンク
Building the perfect iOS Map (II): Completely custom annotation views

how to show multiple lines in MKAnnotation with autolayout?

most simple MKMarkerAnnotationView

//---------------------------------------------------
class StandardAnnotation: NSObject, MKAnnotation {
    let coordinate: CLLocationCoordinate2D
    let title: String?
    let subtitle: String?
    init(coordinate: CLLocationCoordinate2D,title:String,subtitle:String) {
        self.coordinate = coordinate
        // Calloutの場合は、以下必要(titleのみでも可)
        self.title = title
        self.subtitle = subtitle
    }
}
//---------------------------------------------------

現在地表示!!

if annotation is MKUserLocation {
   return nil
}

平成30年7月10日(火曜日)

coredataからの読み込み、MKMarkerAnnotationViewによるmapkit表示完了!!

平成30年7月7日(土曜日)

再学習 以下リンク
 Annotation(独自画像)(AnnotationView 独自画像、テキスト、button action有り)オールカスタマイズ版
Update December 2017: Fully updated for Xcode 9 and Swift 4.
How To Completely Customise Your Map Annotations Callout Views
CustomCalloutView-Starter project

 MKMarkerAnnotationView及びMKAnnotationView対応(source内でコメントアウト)
コールアウト画面の複数行対応等
calloutAccessoryControlTapped有り
MapKit Tutorial: Getting Started
HonoluluArt

その他、参考!!
How to add a button to an MKMapView annotation

Use Markers Instead of Pins for Map Annotations

たたき台として、有用!!2018年06月29日に更新
【swift4:開発メモ①】 MapKit⑴


その他動作確認等
下調べ・・・

以下リンクにて完動!!(swift4.1 Version 9.4 )
Working with Maps on iOS 11 with MapKit and the MKMapView Class
プログラム mapkit_swift4

↓以下 コピペにて完動!! swift4.1
iOS11 アノテーション クラスタリング
プログラム mapkit_swift4A

平成30年7月6日(金曜日)

MKMarkerAnnotationView学習!!

①MKAnnotation(必須)継承し、自らcall!!
②func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {} delegate メソッド

更に
MKAnnotationView(
MKPinAnnotationView
markerAnnotationView(新機能)

pin image 変更
pinView!.image = UIImage(named:”GreenDot”)!

平成30年7月5日(木曜日)

以前のAapKit…

MyAnnotation() → addAnnotation
更に、おそらくdelegateにてcalled!!   viewForAnnotation

plot()
//----------------------------------------
// 色別アノテーション作成
switch read_csv!.csv.rows[i]["section"]!
{
case "滝・川・湖":
let myAnnotation = MyAnnotation(pincolor: sections.sections["滝・川・湖"]!,title: name,subtitle:SubTitle,pin_style:"image",coordinate: location)
self.mapView.addAnnotation(myAnnotation)
case "その他":
let myAnnotation = MyAnnotation(pincolor: sections.sections["その他"]!,title: name,subtitle: SubTitle,pin_style:"pin",coordinate: location)
self.mapView.addAnnotation(myAnnotation)
}
//----------------------------------------

    //----------------------------
    // 標準アノテーション 改!! pin_style追加
    //----------------------------
    class MyAnnotation: NSObject, MKAnnotation
    {
        let pincolor: String
        let title: String?
        let subtitle: String?
        let coordinate: CLLocationCoordinate2D
        // 追加
        let pin_style:String
        
        init(pincolor: String, title: String, subtitle: String, pin_style: String,coordinate: CLLocationCoordinate2D)
        {
            self.pincolor = pincolor
            self.title = title
            self.subtitle = subtitle
            self.coordinate = coordinate
            // 追加
            self.pin_style = pin_style
            
            super.init()
        }
    }

    //----------------------------
    // ピンまたはイメージによる描画
    //----------------------------
    func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
    {
        if let annotation = annotation as? MyAnnotation
        {
            //print(annotation.pin_style)
            
            //=============================================================
            if annotation.pin_style == "pin" {
            ...
            //=============================================================
            } else if annotation.pin_style == "image" {
            }
    }

平成30年7月5日(木曜日)

annotation関係再学習。loop無しに「??」なれど、配列渡しで納得か!!
今後は、新機能の学習予定。

平成30年7月4日(水曜日)

要調査 WebAPI マニュアル POI
WebAPI マニュアル
Yahoo! Japan News等

要設定 マイロケーション!!
Privacy – Location Always Usage Description YourAppName would like to use your location.
Privacy – Location When In Use Usage Description YourAppName would like to use your location.


新機能!!クラスタリング等
MKMarkerAnnotationViewについては、これから
それ以外は完動!!
iOS 11で大幅に強化されたMapKit

swift4.1 完動
サンプル クラスタリング Tandmへのリンク等有り
IOS 11 で MapKit の新機能

国土地理院 地図

平成28年6月26日(日曜日)

mapkit上で、longpressGestureRecognizerを使って、緯度経度を取得表示する。

  1. ストーリーボード上で、longpressGestureRecognizerをmapにドラッグ
  2. ストーリーボード上で、delegateをmapにドラッグ
  3. ストーリーボード上で、sent actionを.hファイルにドラッグ
  4. actionを作成

アクションは以下

[objc]
– (IBAction)longpressToGetLocation:(UILongPressGestureRecognizer *)sender {
if (sender.state != UIGestureRecognizerStateBegan)
return;

CGPoint touchPoint = [sender locationInView:map];
CLLocationCoordinate2D location =
[map convertPoint:touchPoint toCoordinateFromView:map];

NSLog(@"Location found from Map: %f %f",location.latitude,location.longitude);
}
[/objc]

コードでは

[objc]
/*
UILongPressGestureRecognizer *longPressGesture;
longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressToGetLocation:)];
[map addGestureRecognizer:longPressGesture];
map.delegate = self;
*/
[/objc]

平成28年6月12日(日曜日)

  1. 今回プロジェクトの課題は、使用場所が山間であることから、電波が届かない状況においても、地図表示が可能であること。
  2. google、appleマップは、山間においての情報量が少なく、地理院地図を使用する。更には、作成の過程で、新たにオープンストリートマップの存在がわかり、地理院地図とオープンストリートマップを併用することとした。
  3. 本日現在、プロジェクトはほぼ、作成完了し、アイコンやアップル申請の手続きに移行した。

Info.plist(Bundle display name)追加

平成28年6月8日(水曜日)

Right Callout Accessory method and implementation
MKMapView with custom MKAnnotation

平成28年6月5日(日曜日)

パール(perl script)にてダウンロードしたファイル(階層構造)をXCODEにコピーする件について
Finderにて、プロジェクトに地図フォルダをコピー
Xcodeにて、File -> AddFile -> Options -> Create folder reference –
> Add
平成30年9月17日追記(Addの際、指定フォルダを選択状態にしておくこと!!)
以下参考リンク
Xcode: project navigator, difference between Yellow folder and blue folder

平成28年6月3日(金曜日)

タイル計算(緯度経度からパス取得)


★地理院地図、オープンストリートマップ、オフラインマップ等について
検索した結果、目的に最適なのは、以下
プロジェクト内に、perlソースがあり、コンソールにて実行すれば、範囲内のデータが階層的に保存される。
Custom and Offline Maps Using Overlay Tiles ← ソース、記事有り 地理院 アップル グーグルマップ表示確認!!
Plist
↑App Transport Security Settings
↑Allow Arbitrary Loads
以上要!!

perl関連
perl実行
perl myprogram.pl
# この行だけがコメント
地理院url
#my $url = “http://cyberjapandata.gsi.go.jp/xyz/std/$z/$x/$y.png”;


平成28年6月2日(木曜日)

WMS ON MAPKIT WITH IOS7
Customizing MKTileOverlay for cached tiles

★ユーザロケーション(icon表示)
How to change MKMapView’s user-location blue dot to an image of choice?

平成28年6月1日(水曜日)

地理院タイルの各画像ファイルのURL命名

平成28年5月30日(月曜日)

★swift(objective c)
MKTileOverlay, MKMapSnapshotter & MKDirections ← 解説のみ

オフラインマップ
Offline MapKit solution for iOS ← Stack Overflow ソースのみ 未確認

★iOS9以降、MKPinAnnotationViewにdetailCalloutAccessoryViewが追加されました。

タイル一覧

地理院地図 緯度経度取得

地理院地図タイルをGoogle Mapsに重ね合わせる

平成28年5月21日(土曜日)

★参考 ライン
iPhone: How to draw line between two points on MapKit?

OpenStreetmap
how to open OpenStreetmap in mkmapview? -iphone

電子国土ポータル


★現在位置表示
CoreLocation.framework ライブ追加

.hファイル
//追加 iOS8対応 現在位置表示不具合
#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

//追加 iOS8対応 現在位置表示不具合
@property(nonatomic, retain) CLLocationManager *locationManager;

.mファイル
//追加 iOS8対応 現在位置表示不具合
@synthesize locationManager;

viewDidLoad
//追加 iOS8対応 現在位置表示不具合
locationManager.delegate = self;
self.locationManager = [[CLLocationManager alloc] init];
if(IS_OS_8_OR_LATER) {
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager requestAlwaysAuthorization];
}

[self.locationManager startUpdatingLocation];

map.showsUserLocation = YES;


平成28年5月20日(金曜日)

O2O実現の本命機能! iOSの「ジオフェンシング」を使ってみよう
how to open OpenStreetmap in mkmapview? -iphone

平成28年4月28日(木曜日)

yahoo 検索ワード(iOS 地理院)

サンプル動作確認OK!!(以下要 plist追加)

  • App Transport Security Settings(dictionary)
  • Allow Arbitrary Loads

バージョン 10.2.4 から Swift に対応しました ~ArcGIS Runtime SDK for iOS~

★地理院地図 iOS サンプルコード(GitHub)MKOverlayView、drawMapRect版

★iOS版の電子国土v4地図表示アプリを作ってみた。

iOS8 におけるMapKit現在位置不具合

平成26年10月7日(火曜日)
Supporting Files
☓☓-Info.plistに以下追加
NSLocationWhenInUseUsageDescription YourAppName would like to use your location.
NSLocationAlwaysUsageDescription YourAppName would like to use your location.

hファイル
//追加 iOS8対応 現在位置表示不具合
@property(nonatomic, retain) CLLocationManager *locationManager;

mファイル
//追加 iOS8対応 現在位置表示不具合

[objc]
//追加 iOS8対応 現在位置表示不具合
locationManager.delegate = self;
self.locationManager = [[CLLocationManager alloc] init];
if(IS_OS_8_OR_LATER) {
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager requestAlwaysAuthorization];
}

[self.locationManager startUpdatingLocation];
//————ここまで————————-
[/objc]