package com.example.ledong.fragment;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.amap.api.location.AMapLocation;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.MapView;
import com.amap.api.maps.TextureMapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.MyLocationStyle;
import com.example.ledong.R;
/**
* Created by NEDUsoftware on 2016/11/3.
*/
import android.widget.CompoundButton;
import android.widget.ToggleButton;
import androidx.fragment.app.Fragment;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.MyLocationStyle;
public class OutdoorRunFragment extends Fragment implements CompoundButton.OnCheckedChangeListener,LocationSource,AMapLocationListener {
private TextureMapView mapView;
private AMap aMap;
private MyLocationStyle myLocationStyle;
private OnLocationChangedListener mListener;
private AMapLocationClient locationClient;
private AMapLocationClientOption clientOption;
public static OutdoorRunFragment newInstance() {
OutdoorRunFragment fragment = new OutdoorRunFragment();
return fragment;
}
public OutdoorRunFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_outdoor_run, container, false);
initview(savedInstanceState,view);
return view;
}
private void initview( Bundle savedInstanceState,View view){
mapView= view.findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
if (aMap==null)
{
aMap=mapView.getMap();
}
//設定縮放級別
LatLng latLng = new LatLng(121.391382,37.539297);//構造一個位置
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,17));
//顯示定位層并可觸發,默認false
aMap.getUiSettings().setZoomControlsEnabled(false);//設定右下角縮放按鈕是否顯示
aMap.getUiSettings().setMyLocationButtonEnabled(false);//設定右上角定位按鈕是否顯示
aMap.setLocationSource(this);
aMap.setMyLocationEnabled(true);
myLocationStyle = new MyLocationStyle();//初始化定位藍點樣式類
myLocationStyle.strokeColor(Color.argb(0, 0, 0, 0));// 自定義精度范圍的圓形邊框顏色
myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));//圓圈的顏色,設為透明的時候就可以去掉園區區域了
myLocationStyle.showMyLocation(false);
aMap.setMyLocationStyle(myLocationStyle);//設定定位藍點的Style
}
/**
* 激活定位
*/
@Override
public void activate(OnLocationChangedListener listener) {
mListener=listener;
if(locationClient==null){
locationClient=new AMapLocationClient(getActivity());
clientOption=new AMapLocationClientOption();
locationClient.setLocationListener(this);
clientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//高精度定位
clientOption.setOnceLocationLatest(true);//設定單次精確定位
locationClient.setLocationOption(clientOption);
locationClient.startLocation();
}
}
/**
* 停止定位
*/
@Override
public void deactivate() {
mListener=null;
if(locationClient!=null){
locationClient.stopLocation();
locationClient.onDestroy();
}
locationClient=null;
}
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (mListener != null&&aMapLocation != null) {
if (aMapLocation != null
&&aMapLocation.getErrorCode() == 0) {
mListener.onLocationChanged(aMapLocation);// 顯示系統小藍點
} else {
String errText = "定位失敗," + aMapLocation.getErrorCode()+ ": " + aMapLocation.getErrorInfo();
Log.e("AmapErr",errText);
}
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
}
else {
aMap.setMapType(AMap.MAP_TYPE_NORMAL);
}
}
/**
* 必須重寫以下方法
*/
@Override
public void onResume(){
super.onResume();
mapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
if(locationClient!=null){
locationClient.onDestroy();
}
}
}
uj5u.com熱心網友回復:
地圖白屏,只顯示高德地圖logo
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/67314.html
標籤:Android
