1.プロジェクトを作成します
2. AutoNavi開発ユーザーを登録し、コンソールにアクセスして、[アプリケーション管理]-> [マイアプリケーション]をクリックし、新しいアプリケーションを作成します。
3. [追加]をクリックします
SHA1コードを取得します(ここではAndroidStudioを使用しています):
最初にjksファイルを生成します
javaのjdkディレクトリの下のbinディレクトリにコマンドを入力します。keytool-v-keystorefile path
次に、次のパラメータを取得します
上の画像に次のパラメータを入力して送信します
次に、キーを取得します
4.マップ開発パッケージをダウンロードします
https://lbs.amap.com/api/android-sdk/download/、私はこのカスタマイズされたダウンロードパッケージを選びました
図のように、次のパッケージをインポートします
build.gradle(app)を変更して次のように構成を追加し、ページの右上隅にある[今すぐ同期]をクリックします
5.構成
AndroidManifest.xmlを構成します
アプリケーションタグの下に追加
<meta-data
android:name="package名称"
android:value="之前得到的key值"/>
マニフェストタグの下に追加
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
レイアウトファイルを構成し、activity_mainを次のように変更します
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="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=".MainActivity">
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.javaを次のように編集します
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//设置对应的XML布局文件
MapView mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法必须重写
AMap aMap = mapView.getMap();
}
}
試運転:
2、マップにレイヤーを追加します
package com.example.maptest;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.Circle;
import com.amap.api.maps.model.CircleOptions;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.MyLocationStyle;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private MarkerOptions markerOption;
private AMap aMap;
private MapView mapView;
private LatLng latLng=new LatLng(39.761,116.434);
Marker marker;
Circle circle;
private static final int STROKE_COLOR = Color.argb(180, 3, 145, 255);
private static final int FILL_COLOR = Color.argb(10, 0, 0, 180);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法必须重写
init();
}
public void init(){
Button clearMap = (Button) findViewById(R.id.clearMap);
clearMap.setOnClickListener(this);
Button resetMap = (Button) findViewById(R.id.resetMap);
resetMap.setOnClickListener(this);
if(aMap==null){
aMap=mapView.getMap();
addMrkersToMap();//往地图上添加Marker
addCircle();
}
}
private void addMrkersToMap(){
markerOption=new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.storm_06))
.position(latLng)
.draggable(true);
marker=aMap.addMarker(markerOption);
}
public void addCircle(){
CircleOptions circleOptions=new CircleOptions();
circleOptions.center(new LatLng(40,116.434));
circleOptions.radius(500);
circleOptions.strokeWidth(8);
circleOptions.strokeColor(Color.BLUE);
circleOptions.fillColor(Color.BLUE);
circle=aMap.addCircle(circleOptions);
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.clearMap:
if(aMap!=null){
marker.destroy();
circle.destorty();
}
break;
case R.id.resetMap:
if(aMap!=null){
addMrkersToMap();
addCircle();
}
break;
default:
break;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="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=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:background="#D000"
android:orientation="vertical"
android:padding="5dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/clearMap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="clear" />
<Button
android:id="@+id/resetMap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="reset" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
効果画像: