お品書き
Mapbox
ここを見ながらやってく。
build.gradleに追記
いきなりbuild.gradleが2つあり、どっちに書けばいいの?となった。
こっちの(Module:app)でいいんだと思う。
android{}内に書く
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
下記は新しいブロックで書く
repositories { mavenCentral() }
dependencies{}内に書く
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.7.1'
AndroidManifest.xmlに追記
<manifest…>…</manifest>ブロック内に書く。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
これはあれだな、GoogleMapでもやったな。
Mapboxactivity.java
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.maps.MapView; public class MapboxActivity extends AppCompatActivity { private MapView mapView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Mapbox.getInstance(this, "Key"); setContentView(R.layout.activity_mapbox); mapView = findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); } @Override public void onStart() { super.onStart(); mapView.onStart(); } @Override public void onResume() { super.onResume(); mapView.onResume(); } @Override public void onPause() { super.onPause(); mapView.onPause(); } @Override public void onStop() { super.onStop(); mapView.onStop(); } @Override public void onLowMemory() { super.onLowMemory(); mapView.onLowMemory(); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } }
アクセストークンは
Mapbox.getInstance(this, "Key");
に入れる。
activity_mapbox.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:mapbox="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MapboxActivity"> <com.mapbox.mapboxsdk.maps.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" mapbox:mapbox_cameraTargetLat="40.73581" mapbox:mapbox_cameraTargetLng="-73.99155" mapbox:mapbox_styleUrl="mapbox://styles/mapbox/streets-v10" mapbox:mapbox_cameraZoom="11" /> </android.support.constraint.ConstraintLayout>
xmlはまんま。他にどんな設定項目があって、それをするとどうなるのかとか。後回し。
起動してみる
できた。40.73581, -73.99155ってどこじゃろ。
日本語表記にしたい
日本を見てみたら英語表記だったので、日本語にしたい。ここに行って、Styleを編集する。TextFieldの値を全部name_jaにして、
share&useからstyleURLをコピー。shareはprivateとpublicどっちでもいいんかな。んでactivity.xmlの
mapbox:mapbox_styleUrl="mapbox://styles/*****"
に入れる。
…変わらない。あれ?っと思って、とりあえずご飯食べてきたら変わってた。
時間かかるみたいね。
参考
Change your map’s label language | Help
Learn about available languages and how to change your map’s language.
Turf for Javaの導入
build.gradle(app)のrepositories{}に(↑で入れてるけど)
mavenCentral()
と書いて、dependencies{}に
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:4.1.1'
を追加。
使えるようになった!
あとなんかいつの間にかGeoJSONも使えるようになってた!sdkとturfのどっちに入ってたんだろ?
参考
Turf Module | Java SDK | Android Docs
Add spatial data processing to any Java or Kotlin app.
どしどしやってこー
コメント