(自我學習篇之高德地圖)使用與獲取marker的點選事件
阿新 • • 發佈:2018-12-17
獲取之後下載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();
}