2.x → 3.xマイグレーションガイド
このドキュメントではNAVER Map Android SDK バージョン2.xをバージョン3.xにマイグレーションする方法を説明します。
これ以上提供されない機能
次の機能は3.x SDKに含まれて提供されないので、別途提供される代わりの手段を利用してアプリで具現しなければなりません。
座標-住所変換機能
3.x SDKでは2.x SDKでNMapActivity.findPlacemarkAtLocation()
を呼び出して使えた座標-住所変換(Reverse geocoding)機能を提供しません。代わりに、NAVER CLOUD PLATFORMで提供するReverse Geocoding APIを使用できます。詳しい内容はReverse Geocodingをご参考ください。
"NAVER Mapアプリ実行"ボタン
3.x SDKでは2.x SDKでNMapView.setBuiltInAppControls()
を呼び出して有効にできた"NAVER Mapアプリ実行"ボタンを提供しません。代わりに、アプリで直接ボタンを配置し、NAVER CLOUD PLATFORMで提供する地図アプリ連携のURL Scheme機能を使用できます。詳しい内容は地図アプリ連携URL Schemeをご参考ください。
マーカードラッグ
3.x SDKでは2.x SDKでNMapPOIitem.setFloatingMode()
を呼び出して使えたマーカードラッグ機能を提供しません。マーカーをドラッグする代わりに、画面の中心にマーカーの役割を持つビューを固定し、地図を動かして位置を指定することをお勧めします。詳しい内容はデモアプリのCameraEventActivity例題をご参考ください。
環境設定
依存性の追加
3.x SDKのライブラリグループIDはcom.naver.maps.open
からcom.naver.maps
に、アーティファクトIDはnaver-map-ncp-api
からmap-sdk
に変更されました。そのため、依存性宣言をcom.naver.maps.open:naver-map-ncp-api:2.1.x
からcom.naver.maps:map-sdk:3.11.0
に変更します。
また、3.x SDKは別途のBintrayストレージを利用してデプロイされます。ストレージリストにhttps://naver.jfrog.io/artifactory/maven/
を追加します。
2.x
// アプリモジュールbuild.gradle
dependencies {
implementation 'com.naver.maps.open:naver-map-ncp-api:2.1.7'
}
3.x
// ルートプロジェクトbuild.gradle
allprojects {
repositories {
maven {
url 'https://naver.jfrog.io/artifactory/maven/'
}
}
}
// アプリモジュールbuild.gradle
dependencies {
implementation 'com.naver.maps:map-sdk:3.11.0'
}
詳しい内容は始めるドキュメントの依存性の追加節をご参考ください。
クライアントIDの指定
3.x SDKではNMapView.setNcpClientId()
を呼び出す代わりにAndroidManifest.xml
の<meta-data>
を指定したりNaverMapSdk.setClient()
を呼び出してクライアントIDを指定します。
次はクライアントIDを指定する例題です。
2.x
public class YourActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NMapView mapView = findViewById(...);
mapView.setNcpClientId("YOUR_CLIENT_ID_HERE");
}
}
3.x
public class YourApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
NaverMapSdk.getInstance(this).setClient(
new NaverMapSdk.NaverCloudPlatformClient("YOUR_CLIENT_ID_HERE"));
}
}
詳しい内容は始めるドキュメントのクライアントIDの指定節をご参考ください。
地図オブジェクト
地図の表示
3.x SDKではMapFragment
またはMapView
がNMapView
の代わりに地図に対するビューの役割を持ちます。
次はレイアウトXMLを使って地図を画面に表示する例題です。
2.x
<com.nhn.android.maps.NMapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.x
<fragment
android:id="@+id/map_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.naver.maps.map.MapFragment" />
詳しい内容は地図オブジェクトドキュメントのMapFragmentまたはMapView節をご参考ください。
インターフェースオブジェクト
3.x SDKはNaverMap
がNMapController
の代わりに地図に対するインターフェースの役割を持ちます。NMapView.getMapController()
の代わりにMapFragment
またはMapView
のgetMapAsync()
を呼び出してオブジェクトを取得できます。
次は地図ビューに対するインターフェースオブジェクトを取得する例題です。
2.x
NMapController mapController = mapView.getMapController();
// ...
3.x
mapFragment.getMapAsync(naverMap -> {
// ...
});
詳しい内容は地図オブジェクトドキュメントのNaverMapオブジェクトの取得節をご参考ください。
座標
3.x SDKではLatLng
がNGeoPoint
の代わりに座標を表します。LatLng
とNGeoPoint
はコンストラクタパラメータの緯度・軽度の順番が反対ですので、注意してください。
次は座標オブジェクトを作成して、トーストで緯度と経度を出力する例題です。
2.x
NGeoPoint coord = new NGeoPoint(126.9783740, 37.5670135); // 軽度、緯度の順
Toast.makeText(context, "緯度: " + coord.latitude + ", 軽度: " + coord.longitude, Toast.LENGTH_SHORT).show();
3.x
LatLng coord = new LatLng(37.5670135, 126.9783740); // 緯度、経度の順
Toast.makeText(context, "緯度: " + coord.latitude + ", 軽度: " + coord.longitude, Toast.LENGTH_SHORT).show();
詳しい内容は座標オブジェクトドキュメントのLatLng節をご参考ください。
地図タイプの指定
地図のタイプを指定するためにはNMapController.setMapViewMode()
の代わりにNaverMap.setMapType()
を呼び出します。
次は地図のタイプをハイブリッドで指定する例題です。
2.x
mapController.setMapViewMode(NMapView.VIEW_MODE_HYBRID);
3.x
naverMap.setMapType(NaverMap.MapType.Hybrid);
詳しい内容は地図オプションドキュメントの地図タイプ節をご参考ください。
レイヤーグループの指定
特定のレイヤーグループを有効にするためにはNMapController.setMapViewTrafficMode()
, NMapController.setMapViewBicycleMode()
のような個別メソッドの代わりにNaverMap.setLayerGroupEnabled()
を呼び出します。
次はリアルタイム交通情報、自転車レイヤーグループを有効にする例題です。
2.x
mapController.setMapViewTrafficMode(true);
mapController.setMapViewBicycleMode(true);
3.x
naverMap.setLayerGroupEnabled(NaverMap.LAYER_GROUP_TRAFFIC, true);
naverMap.setLayerGroupEnabled(NaverMap.LAYER_GROUP_BICYCLE, true);
詳しい内容は地図オプションドキュメントのレイヤーグループ節をご参考ください。
カメラと投影
カメラの位置
3.x SDKは2.x SDKとは異なるズームレベル体系を使用します。同じ縮尺の場合、3.x SDKのズームレベルが2.x SDKより4倍ほど大きいです。また、ズームレベルのタイプがint
からdouble
に変更されました。
3.x SDKは座標、ズームレベルなど、カメラ関連の値を別々に使う2.x SDKと異なり、このような値を結んだCameraPosition
クラスを使用します。
詳しい内容はカメラと投影ドキュメントのカメラの位置節をご参考ください。
カメラの現在の位置
カメラの現在の位置を取得するためにはNMapController.getMapCenter()
およびNMapController.getZoomLevel()
を呼び出す代わりにNaverMap.getCameraPosition()
を呼び出します。
次はカメラの現在の位置を取得し、トーストで各属性を出力する例題です。
2.x
NGeoPoint center = mapController.getMapCenter();
int zoom = mapController.getZoomLevel();
Toast.makeText(context, "中心緯度: " + center.latitude + ", " +
"中心軽度: " + center.longitude + ", " +
"ズームレベル: " + zoom,
Toast.LENGTH_SHORT).show();
3.x
CameraPosition cameraPosition = naverMap.getCameraPosition();
Toast.makeText(context, "対象地点の緯度: " + cameraPosition.target.latitude + ", " +
"対象地点の軽度: " + cameraPosition.target.longitude + ", " +
"ズームレベル: " + cameraPosition.zoom + ", " +
"傾斜角度: " + cameraPosition.tilt + ", " +
"ベアリング角度: " + cameraPosition.bearing,
Toast.LENGTH_SHORT).show();
詳しい内容はカメラと投影ドキュメントのカメラの現在の位置節をご参考ください。
カメラの移動
カメラの移動のためにはNMapController.setMapCenter()
を呼び出す代わりにCameraUpdate
オブジェクトを作成してmoveCamera()
を呼び出します。
次はカメラの対象座標を(37.5666102, 126.9783881)
地点に、ズームレベルを15(2.x SDK基準11)に変更する例題です。
2.x
mapController.setMapCenter(new NGeoPoint(126.9783881, 37.5666102), 11);
3.x
CameraUpdate cameraUpdate = CameraUpdate.scrollAndZoomTo(new LatLng(37.5666102, 126.9783881), 15);
詳しい内容はカメラの移動ドキュメントのAPI呼び出しでカメラを移動する節をご参考ください。
カメラ変更イベント
カメラ変更イベントを受けるためにはNMapView.setOnMapStateChangeListener()
の代わりにNaverMap.addOnCameraChangeListener()
を呼び出してイベントリスナーを登録します。
次はカメラ変更イベントを受けて変更された位置をロギングする例題です。
2.x
mapView.setOnMapStateChangeListener(new NMapView.OnMapStateChangeListener() {
@Override
public void onMapInitHandler(NMapView mapView, NMapError errorInfo) {
// 使用しない
}
@Override
public void onAnimationStateChange(NMapView mapView, int animType, int animState) {
// 使用しない
}
@Override
public void onMapCenterChange(NMapView mapView, NGeoPoint center) {
Log.i("NaverMap", "中心変更 - 緯度: " + center.latitude + ", 軽度: " + center.longitude);
}
@Override
public void onZoomLevelChange(NMapView mapView, int level) {
Log.i("NaverMap", "ズームレベル変更: " + level);
}
});
3.x
naverMap.addOnCameraChangeListener((reason, animated) -> {
CameraPosition cameraPosition = naverMap.getCameraPosition();
Log.i("NaverMap", "カメラ変更 - 対象地点の緯度: " + cameraPosition.target.latitude + ", " +
"対象地点の軽度: " + cameraPosition.target.longitude + ", " +
"ズームレベル: " + cameraPosition.zoom + ", " +
"傾斜角度: " + cameraPosition.tilt + ", " +
"ベアリング角度: " + cameraPosition.bearing);
});
詳しい内容はカメラの移動ドキュメントのカメラ変更イベント節をご参考ください。
投影
画面座標と地図座標を相互変換するためにはNMapProjection
の代わりにProjection
](https://navermaps.github.io/android-map-sdk/reference/com/naver/maps/map/Projection.html)クラスを使います。NaverMap.getProjection()`を呼び出してインスタンスにアクセスできます。
画面座標を地図座標に変換するためにはNMapProjection.fromPixels()
の代わりにProjection.fromScreenLocation()
を、地図座標を画面座標に変換するためにはNMapProjection.toPixels()
の代わりにtoScreenLocation()
を呼び出します。
次は画面の(100, 100)
地点を地図座標に変換する例題です。
2.x
mapView.getMapProjection().fromPixels(100, 100);
3.x
LatLng coord = naverMap.getProjection().fromScreenLocation(new PointF(100, 100));
次は地図の(37.5666102, 126.9783881)
地点を画面座標に変換する例題です。
2.x
Point point = new Point();
mapView.getMapProjection().toPixels(new NGeoPoint(126.9783881, 37.5666102), point);
3.x
PointF point = naverMap.getProjection().toScreenLocation(new LatLng(37.5666102, 126.9783881));
詳しい内容はカメラと投影ドキュメントの画面座標と地図座標間の変換節をご参考ください。
相互作用
コントロール
3.x SDKにはズームコントロールを始め、様々なコントロールが内蔵されています。2.x SDKでNMapView.setBuiltInZoomControls()
を呼び出して有効にするズームコントロールは基本的に有効になるので、無効にしたい場合はUiSettings.setZoomButtonEnabled()
を呼び出します。UiSettings
オブジェクトはNaverMap.getUiSettings()
を呼び出して取得できます。
2.x
mapController.setBuiltInZoomControls(true, null);
3.x
naverMap.getUiSettings().setZoomButtonEnabled(true);
詳しい内容はユーザーインターフェースドキュメントのコントロール節をご参考ください。
UIイベント
地図のクリック、ロングクリックを受けるためにはNMapView.setOnMapViewTouchEventListener()
の代わりにNaverMap.setOnMapClickListener()
およびNaverMap.setOnMapLongClickListener()
を呼び出してイベントリスナーを登録します。
次は地図のクリック、ロングクリックイベントを受けてトーストでクリックされた座標を出力する例題です。
2.x
mapView.setOnMapViewTouchEventListener(new NMapView.OnMapViewTouchEventListener() {
@Override
public void onLongPress(NMapView mapView, MotionEvent ev) {
NGeoPoint coord = mapView.getMapProjection().fromPixels((int)ev.getX(), (int)ev.getY());
Toast.makeText(this, "ロングクリック: " + coord.latitude + ", " + coord.longitude, Toast.LENGTH_SHORT).show();
}
@Override
public void onLongPressCanceled(NMapView mapView) {
// 使用しない
}
@Override
public void onTouchDown(NMapView mapView, MotionEvent ev) {
// 使用しない
}
@Override
public void onTouchUp(NMapView mapView, MotionEvent ev) {
// 使用しない
}
@Override
public void onScroll(NMapView mapView, MotionEvent e1, MotionEvent e2) {
// 使用しない
}
@Override
public void onSingleTapUp(NMapView mapView, MotionEvent ev) {
NGeoPoint coord = mapView.getMapProjection().fromPixels((int)ev.getX(), (int)ev.getY());
Toast.makeText(this, "クリック: " + coord.latitude + ", " + coord.longitude, Toast.LENGTH_SHORT).show();
}
});
3.x
naverMap.setOnMapClickListener((point, coord) ->
Toast.makeText(this, "クリック: " + coord.latitude + ", " + coord.longitude, Toast.LENGTH_SHORT).show());
naverMap.setOnMapLongClickListener((point, coord) ->
Toast.makeText(this, "ロングクリック: " + coord.latitude + ", " + coord.longitude, Toast.LENGTH_SHORT).show());
詳しい内容はユーザーインターフェースドキュメントのUIイベント節をご参考ください。
位置
2.x SDKでは位置追跡機能を使うためにはNMapLocationManager
, NMapCompassManager
, NMapMyLocationOverlay
を作成して機能を有効にするメソッドをそれぞれ呼び出さなければなりませんでした。
3.x SDKには位置追跡機能が内蔵されているので、NaverMap.setLocationSource()
を呼び出してLocationSource
具現体を指定し、NaverMap.setLocationTrackingMode()
を呼び出すと、位置追跡機能が有効になります。
次は位置追跡機能を有効にする例題です。
2.x
NMapController mapController = mapView.getMapController();
NMapLocationManager mapLocationManager = new NMapLocationManager(context);
mapLocationManager.setOnLocationChangeListener(onMyLocationChangeListener);
mapLocationManager.enableMyLocation(new NMapLocationManager.OnLocationChangeListener() {
@Override
public boolean onLocationChanged(NMapLocationManager locationManager, NGeoPoint myLocation) {
mapController.animateTo(myLocation);
return true;
}
@Override
public void onLocationUpdateTimeout(NMapLocationManager locationManager) {
// 使用しない
}
@Override
public void onLocationUnavailableArea(NMapLocationManager locationManager, NGeoPoint myLocation) {
// 使用しない
}
});
NMapCompassManager mapCompassManager = new NMapCompassManager(context);
mapCompassManager.enableCompass();
NMapViewerResourceProvider mapViewerResourceProvider = new NMapViewerResourceProvider(context);
NMapOverlayManager overlayManager = new NMapOverlayManager(context, mapView, mapViewerResourceProvider);
NMapMyLocationOverlay myLocationOverlay = mapOverlayManager.createMyLocationOverlay(mapLocationManager, mapCompassManager);
myLocationOverlay.setCompassHeadingVisible(true);
mapView.setAutoRotateEnabled(true, false);
3.x
naverMap.setLocationSource(new FusedLocationSource(activity, LOCATION_PERMISSION_REQUEST_CODE));
naverMap.setLocationTrackingMode(LocationTrackingMode.Face);
詳しい内容は位置ドキュメントをご参考ください。
オーバーレイ
使用準備
2.x SDKでオーバーレイ機能を使うためにはまずNMapViewerResourceProvider
とNMapOverlayManager
を作成し、各オーバーレイにNMapXXXdata
を作成した後、NMapOverlayManager.createXXX()
メソッドを呼び出さなければなりませんでした。
3.x SDKではオーバーレイオブジェクトそれぞれが独立して完結性のある作業を行うので、そのような準備過程は不要です。必要なオーバーレイオブジェクトを作成し、属性をオブジェクトに直接指定した後、setMap()
を呼び出すと、オーバーレイが地図に表示されます。
次はオーバーレイ機能を使うために関連オブジェクトを準備する例題です。
2.x
NMapViewerResourceProvider mapViewerResourceProvider = new NMapViewerResourceProvider(context);
NMapOverlayManager overlayManager = new NMapOverlayManager(context, mapView, mapViewerResourceProvider);
3.x
// 準備過程不要
クリックイベント
2.x SDKではオーバーレイのクリックイベントを受けるためにはオーバーレイタイプ別にsetOnFocusChangeListener()
, setOnStateChangeListener()
のようなメソッドをそれぞれ呼び出さなければなりませんでした。
3.x SDKではOverlay.setOnClickListener()
メソッドでOverlay.OnClickListener
を指定します。
2.x
NMapPOIdataOverlay overlay = ...
overlay.setOnStateChangeListener(new NMapPOIdataOverlay.OnStateChangeListener() {
@Override
public void onCalloutClick(NMapPOIdataOverlay poiDataOverlay, NMapPOIitem item) {
Toast.makeText(context, "情報ウィンドウクリック", Toast.LENGTH_SHORT).show();
}
@Override
public void onFocusChanged(NMapPOIdataOverlay poiDataOverlay, NMapPOIitem item) {
if (item != null) {
Toast.makeText(context, "オーバーレイクリック", Toast.LENGTH_SHORT).show();
}
}
});
3.x
Overlay overlay = ...
overlay.setOnClickListener(o -> {
Toast.makeText(context, "オーバーレイクリック", Toast.LENGTH_SHORT).show();
return true;
});
詳しい内容はオーバーレイ共通ドキュメントのイベント節をご参考ください。
マーカー
2.x SDKではマーカーを地図に追加するためにはNMapPOIdata
を作成してNMapOverlayManager.createPOIdataOverlay()
を呼び出さなければなりませんでした。
3.x SDKではMarker
オブジェクトを作成して必要な属性をオブジェクトに直接指定した後、setMap()
を呼び出します。
マーカードラッグ機能はこれからは提供されません。
次はマーカーを地図に追加する例題です。
2.x
NMapPOIdata poiData = new NMapPOIdata(1, mapViewerResourceProvider);
poiData.beginPOIdata(1);
poiData.addPOIitem(126.9783740, 37.5670135, null, NMapPOIflagType.PIN, 0);
poiData.endPOIdata();
NMapPOIdataOverlay marker = mapOverlayManager.createPOIdataOverlay(poiData, null);
marker.showAllPOIdata(0);
3.x
Marker marker = new Marker();
marker.setPosition(new LatLng(37.5670135, 126.9783740));
marker.setMap(naverMap);
詳しい内容はマーカードキュメントをご参考ください。
情報ウィンドウ
2.x SDKではマーカーのタイトルを指定した場合、マーカーをクリックすると、マーカーの上に情報ウィンドウが自動で現れました。情報ウィンドウを別途作成したり同時に1つ以上表示できませんでした。
3.x SDKでは情報ウィンドウもマーカーのように独立したオブジェクトであるため、自由に作成して追加できます。情報ウィンドウを地図に追加するためにはInfoWindow
オブジェクトを作成して必要な属性をオブジェクトに直接指定した後、setMap()
を呼び出します。
次はマーカーをクリックすると情報ウィンドウを地図に追加する例題です。
2.x
NMapPOIdata poiData = new NMapPOIdata(1, mapViewerResourceProvider);
poiData.beginPOIdata(1);
poiData.addPOIitem(126.9783740, 37.5670135, "情報ウィンドウの内容", NMapPOIflagType.PIN, 0);
poiData.endPOIdata();
NMapPOIdataOverlay marker = mapOverlayManager.createPOIdataOverlay(poiData, null);
marker.setOnStateChangeListener(new NMapPOIdataOverlay.OnStateChangeListener() {
@Override
public void onCalloutClick(NMapPOIdataOverlay poiDataOverlay, NMapPOIitem item) {
Toast.makeText(context, "情報ウィンドウクリック", Toast.LENGTH_SHORT).show();
}
@Override
public void onFocusChanged(NMapPOIdataOverlay poiDataOverlay, NMapPOIitem item) {
// 使用しない
}
});
marker.showAllPOIdata(0);
3.x
InfoWindow infoWindow = new InfoWindow();
infoWindow.setAdapter(new InfoWindow.DefaultTextAdapter(context) {
@NonNull
@Override
public CharSequence getText(@NonNull InfoWindow infoWindow) {
return (CharSequence)infoWindow.getMarker().getTag();
}
});
infoWindow.setOnClickListener(overlay -> {
Toast.makeText(context, "情報ウィンドウクリック", Toast.LENGTH_SHORT).show();
return true;
});
Marker marker = new Marker();
marker.setPosition(new LatLng(37.5670135, 126.9783740));
marker.setTag("情報ウィンドウの内容");
marker.setOnClickListener(overlay -> {
infoWindow.open((Marker)overlay);
return true;
});
marker.setMap(naverMap);
詳しい内容は情報ウィンドウドキュメントをご参考ください。
シェイプ
2.x SDKではシェイプを地図に追加するためにはNMapPathData
にシェイプの座標を、NMapPathLineStyle
またはNMapCircleStyle
オブジェクトを利用してシェイプのスタイルを指定してNMapOverlayManager.createPathDataOverlay()
を呼び出さなければなりませんでした。
3.x SDKではPolylineOverlay
, PolygonOverlay
, CircleOverlay
など、タイプ別のシェイプオブジェクトを作成し、必要な属性をオブジェクトに直接指定した後、setMap()
を呼び出します。
次はポリラインを地図に追加する例題です。
2.x
NMapPathLineStyle pathLineStyle = new NMapPathLineStyle(context);
pathLineStyle.setPataDataType(NMapPathLineStyle.DATA_TYPE_POLYLINE);
pathLineStyle.setLineColor(0x00FF00, 0xFF);
NMapPathData pathData = new NMapPathData(9);
pathData.initPathData();
pathData.addPathPoint(126.97714, 37.57152, NMapPathLineStyle.TYPE_SOLID);
pathData.addPathPoint(126.98268, 37.56607, 0);
pathData.addPathPoint(126.97707, 37.56445, 0);
pathData.addPathPoint(126.97822, 37.55855, 0);
pathData.endPathData();
NMapPathDataOverlay polyline = mapOverlayManager.createPathDataOverlay(pathData);
polyline.showAllPathData(0);
3.x
PolylineOverlay polyline = new PolylineOverlay();
polyline.setCoords(Arrays.asList(
new LatLng(37.57152, 126.97714),
new LatLng(37.56607, 126.98268),
new LatLng(37.56445, 126.97707),
new LatLng(37.55855, 126.97822)
));
polyline.setColor(0xFF00FF00);
polyline.setMap(naverMap);
次はポリゴンを地図に追加する例題です。
2.x
NMapPathLineStyle pathLineStyle = new NMapPathLineStyle(context);
pathLineStyle.setPataDataType(NMapPathLineStyle.DATA_TYPE_POLYGON);
pathLineStyle.setFillColor(0xFFFFFF, 0xFF);
pathLineStyle.setLineColor(0x00FF00, 0xFF);
NMapPathData pathData = new NMapPathData(5);
pathData.initPathData();
pathData.addPathPoint126.9712268, 37.5640984, NMapPathLineStyle.TYPE_SOLID);
pathData.addPathPoint126.9767904, 37.5651279, 0);
pathData.addPathPoint126.9832241, 37.5625365, 0);
pathData.addPathPoint126.9809297, 37.5585305, 0);
pathData.addPathPoint126.974617, 37.5590777, 0);
pathData.endPathData();
pathData.setPathLineStyle(pathLineStyle);
NMapPathDataOverlay polygon = mapOverlayManager.createPathDataOverlay(pathData);
polygon.showAllPathData(0);
3.x
PolygonOverlay polygon = new PolygonOverlay();
polygon.setCoords(Arrays.asList(
new LatLng(37.5640984, 126.9712268),
new LatLng(37.5651279, 126.9767904),
new LatLng(37.5625365, 126.9832241),
new LatLng(37.5585305, 126.9809297),
new LatLng(37.5590777, 126.974617)
));
polygon.setColor(0xFFFFFFFF);
polygon.setOutlineColor(0xFF00FF00);
polygon.setMap(naverMap);
次はサークルを地図に追加する例題です。
2.x
NMapCircleStyle circleStyle = new NMapCircleStyle(context);
circleStyle.setFillColor(0xFFFFFF, 0xFF);
circleStyle.setStrokeColor(0x00FF00, 0xFF);
NMapCircleData circleData = new NMapCircleData(1);
circleData.initCircleData();
circleData.addCirclePoint(126.9783881, 37.5666102, 50f);
circleData.endCircleData();
circleData.setCircleStyle(circleStyle);
NMapPathDataOverlay circle = mapOverlayManager.createPathDataOverlay(pathData);
circle.showAllPathData(0);
3.x
CircleOverlay circle = new CircleOverlay();
circle.setCenter(new LatLng(37.5666102, 126.9783881));
circle.setRadius(50);
circle.setColor(0xFFFFFFFF);
circle.setOutlineColor(0xFF00FF00);
circle.setMap(naverMap);
詳しい内容はシェイプドキュメントをご参考ください。
位置オーバーレイ
2.x SDKでは位置オーバーレイと位置追跡機能が分離されていなかったため、位置オーバーレイ作成のためにはNMapLocationManager
, NMapCompassManager
を作成しなければなりませんでした。また、オーバーレイの位置を任意に指定できませんでした。
3.x SDKでは位置オーバーレイが位置追跡機能と独立して動作するので、NaverMap.getLocationOverlay()
を呼び出してインスタンスにアクセスした後、必要な属性を直接指定できます。
2.x
NMapLocationManager mapLocationManager = new NMapLocationManager(context);
NMapCompassManager mapCompassManager = new NMapCompassManager(context);
NMapMyLocationOverlay myLocationOverlay = mapOverlayManager.createMyLocationOverlay(mapLocationManager, mapCompassManager);
3.x
LocationOverlay locationOverlay = naverMap.getLocationOverlay();
locationOverlay.setVisible(true);
詳しい内容は位置オーバーレイドキュメントをご参考ください。