1. 程式人生 > >(自我學習篇之高德地圖)使用與獲取marker的點選事件

(自我學習篇之高德地圖)使用與獲取marker的點選事件

獲取之後下載SDK然後倒入libs用什麼導什麼我先簡單說一個2D的實現與獲取marker的點選事件  3d的多了一步

 

OK就可以使用了   注意許可權


<uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <!--允許程式設定內建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" />

 佈局

    <com.amap.api.maps2d.MapView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/map"
        ></com.amap.api.maps2d.MapView>

 初始化

        mapView = findViewById(R.id.map);
//必須寫的
        mapView.onCreate(savedInstanceState);
//初始化地圖控制器物件
 //初始化地圖控制器物件
        if (map == null) {
            map = mapView.getMap();
        }

//定位

 //定位
        MyLocationStyle myLocationStyle;
        myLocationStyle = new MyLocationStyle();//初始化定位藍點樣式類
        myLocationStyle.interval(2000); //設定連續定位模式下的定位間隔,只在連續定位模式下生效,單次定位模式下不會生效。單位為毫秒。
        map.setMyLocationStyle(myLocationStyle);//設定定位藍點的Style
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);
        map.getUiSettings().setMyLocationButtonEnabled(true);//設定預設定位按鈕是否顯示,非必需設定。
        map.setMyLocationEnabled(true);// 設定為true表示啟動顯示定位藍點,false表示隱藏定位藍點並不進行定位,預設是false。

//maker的建立

 //獨立的方法
public void wan(String name,double x,double y)
{
    MarkerOptions options = new MarkerOptions();
    options.title(name).position(new LatLng(x,y));
    Marker marker = map.addMarker(options);
    marker.setObject(1);
}

//maker的點選事件

 map.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                LatLng position = marker.getPosition();
                double x = position.latitude;
                double y = position.longitude;

                Toast.makeText(MainActivity.this, position+"", Toast.LENGTH_SHORT).show();
                Log.i("banjing",x+"");
                Log.i("banjing",y+"");
                //返回false為點選變為中心點  true是不用
                return false;
            }
        });

必須寫方法


    /**
     * 方法必須重寫
     */
    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }

    /**
     * 方法必須重寫
     */
    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }

    /**
     * 方法必須重寫
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }

    /**
     * 方法必須重寫
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }