2.x → 3.x マイグレーションガイド

この文書は、NAVER地図iOS SDK バージョン2.xバージョン3.xにマイグレーションする方法を説明します。

今後提供されない機能

次の機能は3.x SDKに含まれて提供されないので、別途提供される代わりの手段を利用してアプリで実装しなければなりません。

座標-住所変換機能

3.x SDKは、2.x SDKでNMapReverseGeocoder.findPlacemarkAtLocation:を呼び出して利用することができた座標-住所変換(Reverse geocoding)機能を提供しません。その代わり、NAVERクラウドプラットフォームで提供されるReverse Geocoding APIを使用できます。詳しい内容は、Reverse Geocodingを参考にしてください。

3.x SDKは、2.x SDKでNMapView.setBuiltInAppControl:を呼び出して有効化することができた“NAVER地図アプリ実行”ボタンを提供しません。その代わり、アプリで直接ボタンを配置し、NAVERクラウドプラットフォームで提供される地図アプリ連携URL Scheme機能を利用できます。詳しい内容は、地図アプリ連携URL Schemeを参考にしてください。

マーカードラッグ

3.x SDKは、2.x SDKでNMapPOIitem.setPOIflagMode:を呼び出して利用することができたマーカードラッグ機能を提供しません。マーカーをドラッグする代わりに、画面の中心にマーカーの役割を持つビューを固定し、地図を動かして位置を指定することをお勧めします。詳しい内容は、デモアプリのCameraEventViewController例題を参考にしてください。

環境設定

依存性の追加

3.x SDKのライブラリはcocoapodsを通じて配布されます。cocoapodsgit-lfsを必ずインストールしなければなりません。従来の2.x SDK NMapViewerSDK.frameworkApiGatewayMac.frameworkをプロジェクトから削除した後、Podfileを作成してpod installを実行し、frameworkを追加します。

大容量バイナリを受け取るためにgit-lfsを追加でインストールします。

以下はPodfileの例題です。

platform :ios, '9.0'
use_frameworks!

target 'MyApp' do
  pod 'NMapsMap'
end

詳しい内容は、始める文書の依存性の追加の章を参考にしてください。

クライアントIDの指定

3.x SDKは、NMapView.setClientId:を呼び出す代わり、info.plistNMFClientIdをキーの値として指定するか、NMFAuthManager.clientId属性にクライアントIDを指定します。

以下はクライアントIDを指定する例題です。

2.x

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.mapView setClientId:@"YOUR_CLIENT_ID_HERE"];
}

3.x

- (void)viewDidLoad {
    [super viewDidLoad];
    [NMFAuthManager shared].clientId = @"YOUR_CLIENT_ID_HERE";
}

詳しい内容は、始める文書のクライアントIDの指定の章を参考にしてください。

地図オブジェクト

地図表示

3.x SDKは、NMFNaverMapViewまたはNMFMapViewNMapViewの代わりに地図に対するビューの役割を持ちます。

以下は、地図をサブビューとして追加して画面に表示する例題です。

2.x

NMapView *mapView = [[NMapView alloc] initWithFrame:self.view.frame];
[mapView setReverseGeocoderDelegate:self];
[mapView setDelegate:self];
[self.view addSubview:mapView];

3.x

NMFMapView *mapView = [[NMFMapView alloc] initWithFrame:self.view.frame];
mapView.delegate = self;
[self.view addSubView:mapView];

詳しい内容は、地図オブジェクト文書を参考にしてください。

座標

3.x SDKは、NMGLatLngNGeoPointの代わりに座標を表示します。NMGLatLngNGeoPointは、コンストラクタパラメータの経緯度順序が逆であることに注意してください。

以下は、座標オブジェクトを作成してコンソールに緯度と経度を表示する例題です。

2.x

NGeoPoint coord = NGeoPointMake(126.9783740, 37.5670135); // 経度、緯度順

NSLog(@"緯度: %f, 経度: %f", coord.latitude ,coord.longitude);

3.x

NMGLatLng *coord = NMGLatLngMake(37.5670135, 126.9783740); // 緯度、経度順

NSLog(@"緯度: %f, 経度: %f", coord.lat ,coord.lng);

詳しい内容は、座標オブジェクト文書のLatLngの章を参考にしてください。

地図タイプの指定

地図のタイプを指定するには、NMapController.setMapViewMode:の代わりにNMFMapView.mapType属性を指定します。

以下は、地図のタイプをハイブリッドに指定する例題です。

2.x

[self.mapView setMapViewMode:NMapViewModeHybrid];

3.x

self.mapView.mapType = NMFMapTypeHybrid;

詳しい内容は、地図のオプション文書の地図タイプの章を参考にしてください。

レイヤーグループの指定

特定のレイヤーグループを有効化するには、NMapController.setMapViewTrafficMode:, NMapController.setMapViewBicycleMode:のような個別のメソッドの代わりにNMFMapView.setLayerGroup:isEnabled:を呼び出します。

以下は、リアルタイム交通情報、自転車レイヤーグループを有効化する例題です。

2.x

[self.mapView setMapViewTrafficMode:YES];
[self.mapView setMapViewBicycleMode:YES];

3.x

[self.mapView setLayerGroup:NMF_LAYER_GROUP_TRAFFIC isEnabled:YES];
[self.mapView setLayerGroup:NMF_LAYER_GROUP_BICYCLE isEnabled:YES];

詳しい内容は、地図のオプション文書のレイヤーグループの章を参考にしてください。

カメラと投影

カメラの位置

3.x SDKは2.x SDKと異なるズームレベル体系を使用します。同じ縮尺の場合、3.x SDKのズームレベルが2.x SDKより4ほど大きいです。また、ズームレベルのタイプがintからdoubleに変更されました。

3.x SDKは座標、ズームレベルなどカメラ関連の値を別々に使用する2.x SDKとは違い、このような値をまとめたNMFCameraPositionクラスを使用します。

詳しい内容は、カメラと投影文書のカメラの位置の章を参考にしてください。

カメラの現在位置

カメラの現在位置を取得するには、NMapController.mapCenterNMapController.zoomLevel属性の代わりにNMFMapView.cameraPositionを呼び出します。

以下は、カメラの現在位置を取得し、コンソールで各属性を表示する例題です。

2.x

NGeoPoint center = self.mapView.mapCenter;
int zoom = self.mapView.zoomLevel;

NSLog(@"中心緯度: %f, 中心経度: %f, ズームレベル: %d", center.latitude, center.longitude, zoom);

3.x

NMFCameraPosition *cameraPosition = self.mapView.cameraPosition;

NSLog(@"対象地点の緯度: %f,対象地点の経度: %f,ズームレベル: %f,傾斜角度: %f,ヘディング角度: %f"
        cameraPosition.target.lat, cameraPosition.target.lng,
        cameraPosition.zoom, cameraPosition.tilt, cameraPosition.heading);

詳しい内容は、カメラと投影文書のカメラの現在位置の章を参考にしてください。

カメラの移動

カメラを移動するには、NMapController.setMapCenter:を呼び出す代わり、NMFCameraUpdateオブジェクトを作成してNMFMapView.moveCamera:を呼び出します。

以下は、カメラの対象座標を (37.5666102,126.9783881)地点に、ズームレベルを15(2.x SDK基準11)に変更する例題です。

2.x

[self.mapView setMapCenter:NGeoPointMake(126.9783881, 37.5666102) atLevel: 11];

3.x

NMFCameraUpdate *cameraUpdate = [NMFCameraUpdate cameraUpdateWithScrollTo:
                                                    NMGLatLngMake((37.5666102, 126.9783881)
                                                 zoomTo:15];
[self.mapView moveCamera:cameraUpdate];

詳しい内容は、カメラの移動文書のAPI呼び出しでカメラを移動するの章を参考にしてください。

カメラ変更イベント

カメラ変更イベントを取得するには、NMapView.delegate属性と同様にNMFMapView.delegate属性を指定し、当該コールバックメソッドを実装します。

以下は、カメラ変更イベントを取得して変更された位置をロギングする例題です。

2.x

- (void)viewDidLoad {
    [super viewDidLoad];

    self.mapView.delegate = self; // 現在のビューコントローラがコールバックイベントを取得するように指定
}

- (void) onMapView:(NMapView *)mapView didChangeMapLevel:(int)level {
    NSLog(@"ズームレベルの変更: %d", level);
}

- (void) onMapView:(NMapView *)mapView didChangeMapCenter:(NGeoPoint)location {
    NSLog(@"中心変更- 緯度: %f, 経度: %f", location.longitude, location.latitude);
}

3.x

- (void)viewDidLoad {
    [super viewDidLoad];

    self.mapView.delegate = self; // 現在のビューコントローラがコールバックイベントを取得するように指定
}

- (void)mapView:(nonnull NMFMapView *)mapView regionDidChangeAnimated:(BOOL)animated byReason:(NSInteger)reason {
    NMFCameraPosition *cameraPosition = mapView.cameraPosition;

    NSLog(@"カメラ変更- 対象地点の緯度: %f,対象地点の経度: %f,ズームレベル: %f,傾斜角度: %f,ヘディング角度: %f"
            cameraPosition.target.lat, cameraPosition.target.lng,
            cameraPosition.zoom, cameraPosition.tilt, cameraPosition.heading);
}

詳しい内容は、カメラの移動文書のカメラ変更イベントの章を参考にしてください。

投影

画面座標と地図座標を相互変換するためには、NMapProjectionの代わりにNMFProjectionクラスを使用します。NMFMapView.projection属性で取得できます。

画面座標を地図座標に変換するには、NMapProjection.fromPoint:の代わりにNMFProjection.latlngFromPoint:を、地図座標を画面座標に変換するには NMapProjection.toPointFromLocation:の代わりにNMFProjection.pointFromLatLng:を呼び出します。

以下は、画面の(100, 100)地点を地図座標に変換する例題です。

2.x

NGeoPoint coord = [self.mapView fromPoint:CGPointMake(100, 100)];

3.x

NMGLatLng *coord = [self.mapView.projection latlngFromPoint:CGPointMake(100, 100)];

以下は、地図の(37.5666102, 126.9783881)地点を画面座標に変換する例題です。

2.x

CGPoint point = [self.mapView toPointFromLocation:NGeoPointMake(126.9783881, 37.5666102)];

3.x

CGPoint point = [self.mapView.projection pointFromLatLng:NMGLatLngMake(37.5666102, 126.9783881)];

詳しい内容は、カメラと投影文書の画面座標と地図座標間の変換の章を参考にしてください。

相互作用

コントロール

3.x SDKにはズームコントロールをはじめとした様々なコントロールが内蔵されています。ズームコントロールは基本的に有効になるので、無効にしたい場合はNMFNaverMapView.showZoomControlsを呼び出します。

2.x

//サポートしない

3.x

self.naverMapView.showZoomControls = YES;

詳しい内容は、ユーザーインタフェース文書のコントロールの章を参考にしてください。

UIイベント

地図のタブイベントを取得するには、-onMapView:handleSingleTapGesture:の代わりに-didTapMapView:LatLng:メソッドを用いてコールバックイベントを取得します。

以下は、地図のタブイベントを取得してタブされた座標を表示する例題です。

2.x

- (void) onMapView:(NMapView *)mapView handleSingleTapGesture:(UIGestureRecognizer*)recogniser {
    NGeoPoint coord = [mapView fromPoint:[recogniser locationInView:mapView]];
    NSLog(@"タブ : %f, %f", coord.latitude, coord.longitude);
}

3.x

- (void)didTapMapView:(CGPoint)point LatLng:(NMGLatLng *)latlng {
    NSLog(@"タブ : %f, %f", latlng.lat, latlng.lng);
}

詳しい内容は、ユーザーインタフェース文書のUIイベントの章を参考にしてください。

位置

2.x SDKで位置追跡機能を利用するためには、NMapLocationManager,NMapMyLocationOverlayを作成して機能を有効にするメソッドをそれぞれ呼び出さなければなりませんでした。

3.x SDKでは位置追跡機能が内蔵されているため、NMFNaverMapView.positionMode属性を変更すると位置追跡機能が有効になります。

以下は、位置追跡機能を有効化する例題です。

2.x

- (void)findMyLocation {
    NMapLocationManager *lm = [NMapLocationManager getSharedInstance];

    [lm setDelegate:self];    
    [self.mapView setAutoRotateEnabled:YES];
    [lm startUpdatingHeading];
    [lm startContinuousLocationInfo];
}

- (void)locationManager:(NMapLocationManager *)locationManager didUpdateToLocation:(CLLocation *)location {

    CLLocationCoordinate2D coordinate = [location coordinate];

    NGeoPoint myLocation;
    myLocation.longitude = coordinate.longitude;
    myLocation.latitude = coordinate.latitude;
    float locationAccuracy = [location horizontalAccuracy];

    [[self.mapView mapOverlayManager] setMyLocation:myLocation locationAccuracy:locationAccuracy];

    [self.mapView setMapCenter:myLocation];
}

- (void)locationManager:(NMapLocationManager *)locationManager didUpdateHeading:(CLHeading *)heading {
    double headingValue = [heading trueHeading] < 0.0 ? [heading magneticHeading] : [heading trueHeading];
    [self.mapView setRotateAngle:(CGFloat)headingValue];    
}

3.x

self.naverMapView.positionMode = NMFMyPositionCompass;

詳しい内容は、位置文書を参考にしてください。

オーバーレイ

使用準備

2.x SDKでオーバーレイ機能を利用するには、先にNMapPOIdataOverlayDelegate関連メソッドを実装し、各オーバーレイにNMapXXXdataを作成した後、NMapOverlayManager.newXXXOverlay:メソッドを呼び出さなければなりませんでした。

3.x SDKでは、各オーバーレイオブジェクトが独立して完結し、機能を実行するので、このような準備過程は不要です。必要なオーバーレイオブジェクトを作成し、属性をオブジェクトに直接指定した後、mapView属性に表示する地図を指定すると、オーバーレイが表示されます。

以下は、オーバーレイ機能を利用するために関連オブジェクトを準備する例題です。

2.x

NMapOverlayManager *mapOverlayManager = [self.mapView mapOverlayManager];

3.x

// 準備過程は不要

タブイベント

2.x SDKでは、オーバーレイのタブイベントを取得するには、NMapPOIdataOverlayDelegateで定義されたメソッドを実装し、-onMapOverlay:didChangeSelectedPOIitemAtIndex:withObject:などのメソッドでイベントを実装しなければなりませんでした。

3.x SDKでは、NMFOverlay.touchHandler属性にブロックメソッドでNMFOverlayTouchHandlerを指定します。

2.x

NMapPOIdataOverlay overlay = ...

- (BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didChangeSelectedPOIitemAtIndex:(int)index withObject:(id)object {
    NSLog(@"オーバーレイタブ: %d", index);

    return YES;
}

- (BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didSelectCalloutOfPOIitemAtIndex:(int)index withObject:(id)object {
    NSLog(@"情報ウィンドウタブ: %d", index);

    return YES;
}

3.x

NMFOverlay *overlay = ...
overlay.touchHandler = ^BOOL(NMFOverlay *overlay) {
    NSLog(@"オーバーレイタブ");
    return YES;
};

詳しい内容は、オーバーレイ共通文書のイベントの章を参考にしてください。

マーカー

2.x SDKでは、マーカーを地図に追加するにはNMapPOIdataを作成してNMapOverlayManager.newPOIdataOverlayを呼び出さなければなりませんでした。

3.x SDKでは、NMFMarkerオブジェクトを作成して必要な属性をオブジェクトに直接指定した後、mapView属性に表示する地図を指定します。

今後マーカードラッグ機能は提供されません。

以下は、マーカーを地図に追加する例題です。

2.x

NMapOverlayManager *mapOverlayManager = [_mapView mapOverlayManager];
NMapPOIdataOverlay *poiDataOverlay = [mapOverlayManager newPOIdataOverlay];
[poiDataOverlay initPOIdata:1];
[poiDataOverlay addPOIitemAtLocation:NGeoPointMake(126.9783740, 37.5670135) title:nil type:NMapPOIflagTypePin iconIndex:0 withObject:nil];
[poiDataOverlay endPOIdata];
[poiDataOverlay showAllPOIdata];

3.x

NMFMarker *marker = [NMFMarker markerWithPosition:NMGLatLngMake(37.5670135, 126.9783740)];
marker.mapView = self.mapView;

詳しい内容は、マーカー文書を参考にしてください。

情報ウィンドウ

2.x SDKでは、マーカーのタイトルを指定した場合、マーカーをタブすると自動的にマーカーの上に情報ウィンドウが現れました。情報ウィンドウを別途作成したり、同時に一つ以上表示することはできませんでした。

3.x SDKでは、情報ウィンドウもマーカーのように独立したオブジェクトなので、自由に作成したり、追加することができます。情報ウィンドウを地図に追加するには、NMFInfoWindowオブジェクトを作成して必要な属性をオブジェクトに直接指定した後、-openWithMapView:を呼び出します。

以下は、マーカーをタブすると情報ウィンドウを地図に追加する例題です。

2.x

NMapOverlayManager *mapOverlayManager = [self.mapView mapOverlayManager];
NMapPOIdataOverlay *poiDataOverlay = [mapOverlayManager newPOIdataOverlay];
[poiDataOverlay initPOIdata:1];
[poiDataOverlay addPOIitemAtLocation:NGeoPointMake(126.9783740, 37.5670135) title:@"情報ウィンドウの内容" type:NMapPOIflagTypePin iconIndex:0 withObject:nil];
[poiDataOverlay endPOIdata];
[poiDataOverlay showAllPOIdata];

- (UIView*) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay viewForCalloutOverlayItem:(NMapPOIitem *)poiItem calloutPosition:(CGPoint *)calloutPosition {
    self.callOutLabel.text = poiItem.title;
    return self.callOutView;
}

- (BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didSelectCalloutOfPOIitemAtIndex:(int)index withObject:(id)object {
    NSLog(@"情報ウィンドウタブ: %d", index);
    return YES;
}

3.x

NMFInfoWindow *infoWindow = [NMFInfoWindow infoWindow];
infoWindow.dataSource = [NaverDefaultInfoWindowImage defaultInfoWindowImage];
infoWindow.touchHandler = ^BOOL(NMFOverlay *overlay) {
    NSLog(@"情報ウィンドウタブ");
    return YES;
};

NMFMarker *marker = [NMFMarker markerWithPosition:NMGLatLngMake(37.5670135, 126.9783740)];
marker.userInfo = @{INFOWINDOW_TITLE_KEY:@"情報ウィンドウの内容"};
marker.touchHandler = ^BOOL(NMFOverlay *overlay) {
    [infoWindow openWithMarker:(NMFMarker *)overlay];
    return YES;
};
marker.mapView = self.mapView;

詳しい内容は、情報ウィンドウ文書を参考にしてください。

シェイプ

2.x SDKでは、シェイプを地図に追加するにはNMapPathDataにシェイプの座標を、NMapPathLineStyleまたはNMapCircleStyleオブジェクトを用いてシェイプのスタイルを指定し、NMapOverlayManager.newPathDataOverlay:を呼び出さなければなりませんでした。

3.x SDKでは、NMFPolylineOverlayNMFPolygonOverlayNMFCircleOverlayなどタイプ別シェイプオブジェクトを作成して必要な属性を直接オブジェクトに指定した後、mapView属性に表示する地図を指定します。

以下は、ポリラインを地図に追加する例題です。

2.x

NMapPathData *pathData = [[NMapPathData alloc] initWithCapacity:4];
[pathData initPathData];
[pathData addPathPointLongitude:126.97714 latitude:37.57152 lineType:NMapPathLineTypeSolid];
[pathData addPathPointLongitude:126.98268 latitude:37.56607 lineType:0];
[pathData addPathPointLongitude:126.97707 latitude:37.56445 lineType:0];
[pathData addPathPointLongitude:126.97822 latitude:37.55855 lineType:0];
[pathData endPathData];

NMapPathLineStyle *style = [[NMapPathLineStyle alloc] init];
[style setPathDataType:NMapPathDataTypePolyline];
[style setLineColor:[UIColor greenColor]];
[pathData setPathLineStyle:style];

NMapPathDataOverlay *pathDataOverlay = [mapOverlayManager newPathDataOverlay:pathData];
[pathDataOverlay showAllPathData];

3.x

NMFPolylineOverlay *polyline = [NMFPolylineOverlay polylineOverlayWithPoints:
                                @[
                                    NMGLatLngMake(37.57152, 126.97714),
                                    NMGLatLngMake(37.56607, 126.98268),
                                    NMGLatLngMake(37.56445, 126.97707),
                                    NMGLatLngMake(37.55855, 126.97822)
                                ]];
polyline.color = UIColor.greenColor;
polyline.mapView = self.mapView;

以下は、ポリゴンを地図に追加する例題です。

2.x

NMapOverlayManager *mapOverlayManager = [self.mapView mapOverlayManager];
NMapPathData *pathData = [[NMapPathData alloc] initWithCapacity:5];
[pathData initPathData];
[pathData addPathPointLongitude:126.9712268 latitude:37.5640984 lineType:NMapPathLineTypeSolid];
[pathData addPathPointLongitude:126.9767904 latitude:37.5651279 lineType:0];
[pathData addPathPointLongitude:126.9832241 latitude:37.5625365 lineType:0];
[pathData addPathPointLongitude:126.9809297 latitude:37.5585305 lineType:0];
[pathData addPathPointLongitude:126.974617 latitude:37.5590777 lineType:0];
[pathData endPathData];

NMapPathLineStyle *style = [[NMapPathLineStyle alloc] init];
[style setPathDataType:NMapPathDataTypePolygon];
[style setLineColor:[UIColor greenColor]];
[style setFillColor:[UIColor whiteColor]];
[pathData setPathLineStyle:style];

NMapPathDataOverlay *pathDataOverlay = [mapOverlayManager newPathDataOverlay:pathData];
[pathDataOverlay showAllPathData];

3.x

NMGPolygon *polygon = [NMGPolygon polygonWithRing:
                        [NMGLineString lineStringWithPoints:@[
                            NMGLatLngMake(37.5640984, 126.9712268),
                            NMGLatLngMake(37.5651279, 126.9767904),
                            NMGLatLngMake(37.5625365, 126.9832241),
                            NMGLatLngMake(37.5585305, 126.9809297),
                            NMGLatLngMake(37.5590777, 126.974617)
                        ]]];
NMFPolygonOverlay *polygonOverlay = [NMFPolygonOverlay polygonOverlay:polygon];
polygonOverlay.fillColor = UIColor.whiteColor;
polygonOverlay.outlineColor = UIColor.greenColor;
polygonOverlay.mapView = self.mapView;

以下は、サークルを地図に追加する例題です。

2.x

NMapOverlayManager *mapOverlayManager = [self.mapView mapOverlayManager];
NMapPathDataOverlay *pathDataOverlay = [mapOverlayManager newPathDataOverlay:[[NMapPathData alloc] init]];

NMapCircleData *circleData = [[NMapCircleData alloc] initWithCapacity:1];
[circleData initCircleData];
[circleData addCirclePointLongitude:126.9783881 latitude:37.5666102 radius:50.0F];

NMapCircleStyle *circleStyle = [[NMapCircleStyle alloc] init];
[circleStyle setFillColor:[UIColor whiteColor]];
[circleStyle setStrokeColor:[UIColor greenColor]];

[circleData setCircleStyle:circleStyle];
[circleData endCircleData];

[pathDataOverlay addCircleData:circleData];
[pathDataOverlay showAllPathData];

3.x

NMFCircleOverlay* circleOverlay = [NMFCircleOverlay circleOverlay:NMGLatLngMake(37.5666102, 126.9783881) radius:50];
circleOverlay.fillColor = UIColor.whiteColor;
circleOverlay.outlineColor = UIColor.greenColor;
circleOverlay.mapView = self.mapView;

詳しい内容はシェイプ文書を参考にしてください。

位置オーバーレイ

2.x SDKでは、位置オーバーレイが分離できず、NMapOverlayManagerを通じてのみ位置オーバーレイにアクセスすることができました。

3.x SDKでは、位置オーバーレイが独立して動作するため、NMFMapView.locationOverlay属性を呼び出してインスタンスにアクセスした後、必要な属性を直接指定できます。

2.x

[[self.mapView mapOverlayManager] setMyLocation:myLocation locationAccuracy:locationAccuracy];

3.x

NMFLocationOverlay *locationOverlay = self.mapView.locationOverlay;
locationOverlay.hidden = NO;

詳しい内容は、位置オーバーレイ文書を参考にしてください。

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...