|
|
package com.example.simulatepositioning;
|
|
|
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
//import android.support.v7.app.AppCompatActivity;
|
|
|
import android.util.Log;
|
|
|
import android.view.View;
|
|
|
import android.widget.Button;
|
|
|
import android.widget.EditText;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
|
|
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.MapView;
|
|
|
import com.amap.api.maps.MapsInitializer;
|
|
|
import com.amap.api.maps.model.MyLocationStyle;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.Date;
|
|
|
|
|
|
public class test extends AppCompatActivity implements View.OnClickListener {
|
|
|
private String city;
|
|
|
//声明AMapLocationClientOption对象
|
|
|
public AMapLocationClientOption mLocationOption = null;
|
|
|
//声明AMapLocationClient类对象
|
|
|
public AMapLocationClient mLocationClient = null;
|
|
|
//声明定位回调监听器
|
|
|
public AMapLocationListener mLocationListener = new AMapLocationListener() {
|
|
|
@Override
|
|
|
public void onLocationChanged(AMapLocation amapLocation) {
|
|
|
if (amapLocation != null) {
|
|
|
if (amapLocation.getErrorCode() == 0) {
|
|
|
//可在其中解析amapLocation获取相应内容。
|
|
|
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
|
|
|
amapLocation.getLatitude();//获取纬度
|
|
|
amapLocation.getLongitude();//获取经度
|
|
|
amapLocation.getAccuracy();//获取精度信息
|
|
|
// dizhi.setText(amapLocation.getAddress());
|
|
|
amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
|
|
|
amapLocation.getCountry();//国家信息
|
|
|
amapLocation.getProvince();//省信息
|
|
|
amapLocation.getCity();//城市信息
|
|
|
|
|
|
// dizhi.setText(amapLocation.getCity());
|
|
|
|
|
|
dizhi.setText(amapLocation.getCity());
|
|
|
city=amapLocation.getCity();
|
|
|
// city="龙港市";
|
|
|
|
|
|
amapLocation.getDistrict();//城区信息
|
|
|
amapLocation.getStreet();//街道信息
|
|
|
amapLocation.getStreetNum();//街道门牌号信息
|
|
|
amapLocation.getCityCode();//城市编码
|
|
|
amapLocation.getAdCode();//地区编码
|
|
|
amapLocation.getAoiName();//获取当前定位点的AOI信息
|
|
|
amapLocation.getBuildingId();//获取当前室内定位的建筑物Id
|
|
|
amapLocation.getFloor();//获取当前室内定位的楼层
|
|
|
amapLocation.getGpsAccuracyStatus();//获取GPS的当前状态
|
|
|
//获取定位时间
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
Date date = new Date(amapLocation.getTime());
|
|
|
df.format(date);
|
|
|
|
|
|
} else {
|
|
|
//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
|
|
|
Log.e("AmapError", "location Error, ErrCode:"
|
|
|
+ amapLocation.getErrorCode() + ", errInfo:"
|
|
|
+ amapLocation.getErrorInfo());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
};
|
|
|
private MapView mMapView;
|
|
|
private AMap aMap;
|
|
|
private Button dizhi;
|
|
|
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
setContentView(R.layout.activity_test);
|
|
|
MapsInitializer.updatePrivacyShow(this,true,true);
|
|
|
MapsInitializer.updatePrivacyAgree(this,true);
|
|
|
|
|
|
dizhi = findViewById(R.id.dizhi);
|
|
|
dizhi.setOnClickListener(this);
|
|
|
//获取地图控件引用
|
|
|
mMapView = (MapView) findViewById(R.id.mapview);
|
|
|
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
|
|
|
mMapView.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
|
if (aMap == null) {
|
|
|
aMap = mMapView.getMap();
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
dingwei();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
/* routeSearch = new RouteSearch(this);
|
|
|
|
|
|
routeSearch.setRouteSearchListener(this);*/
|
|
|
|
|
|
}
|
|
|
|
|
|
private void dingwei() throws Exception {
|
|
|
MyLocationStyle myLocationStyle;
|
|
|
myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
|
|
|
myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
|
|
|
aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
|
|
|
//aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。
|
|
|
aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
|
|
|
|
|
|
|
|
|
//初始化定位
|
|
|
mLocationClient = new AMapLocationClient(getApplicationContext());
|
|
|
//设置定位回调监听
|
|
|
mLocationClient.setLocationListener(mLocationListener);
|
|
|
|
|
|
|
|
|
//初始化AMapLocationClientOption对象
|
|
|
mLocationOption = new AMapLocationClientOption();
|
|
|
|
|
|
//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
|
|
|
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
|
|
|
|
|
|
//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。
|
|
|
mLocationOption.setInterval(1000);
|
|
|
|
|
|
//设置是否返回地址信息(默认返回地址信息)
|
|
|
mLocationOption.setNeedAddress(true);
|
|
|
//单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
|
|
|
mLocationOption.setHttpTimeOut(20000);
|
|
|
|
|
|
//给定位客户端对象设置定位参数
|
|
|
mLocationClient.setLocationOption(mLocationOption);
|
|
|
//启动定位
|
|
|
mLocationClient.startLocation();
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
super.onDestroy();
|
|
|
//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
|
|
|
mMapView.onDestroy();
|
|
|
mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务。
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void onResume() {
|
|
|
super.onResume();
|
|
|
//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
|
|
|
mMapView.onResume();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void onPause() {
|
|
|
super.onPause();
|
|
|
//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
|
|
|
mMapView.onPause();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void onSaveInstanceState(Bundle outState) {
|
|
|
super.onSaveInstanceState(outState);
|
|
|
//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
|
|
|
mMapView.onSaveInstanceState(outState);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void onStop() {
|
|
|
super.onStop();
|
|
|
mLocationClient.stopLocation();//停止定位后,本地定位服务并不会被销毁
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onClick(View view) {
|
|
|
Intent intent=new Intent(test.this,MainActivity.class);
|
|
|
intent.putExtra("city",city);
|
|
|
startActivityForResult(intent,1001);
|
|
|
}
|
|
|
} |