高德定位
来源:互联网 发布:linux常用命令kill 编辑:程序博客网 时间:2024/05/09 19:26
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.LocationSource.OnLocationChangedListener;
import com.amap.api.maps.MapView;
import com.amap.api.maps.overlay.PoiOverlay;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.core.SuggestionCity;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;
public class MainActivity extends Activity implements LocationSource,
AMapLocationListener {
private OnLocationChangedListener mListener;
private AMapLocationClient mlocationClient;
private AMapLocationClientOption mLocationOption;
private EditText ed_tv1;
private Button but1;
private MapView mapView;
PoiSearch.Query query;
private PoiResult poiResult;
private AMap aMap;
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed_tv1 = (EditText) findViewById(R.id.ed_tv1); but1 = (Button) findViewById(R.id.but1); mapView = (MapView) findViewById(R.id.map); // 获取地图控件引用 mapView = (MapView) findViewById(R.id.map); // 在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理 mapView.onCreate(savedInstanceState); // but1.setOnClickListener(this); init();}private void init() { if (aMap == null) { aMap = mapView.getMap(); setUpMap(); }}/** * 设置一些amap的属性 */private void setUpMap() { aMap.setLocationSource(this);// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false // 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转几种 aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);}/** * 方法必须重写 */@Overrideprotected void onResume() { super.onResume(); mapView.onResume();}/** * 方法必须重写 */@Overrideprotected void onPause() { super.onPause(); mapView.onPause(); deactivate();}/** * 方法必须重写 */@Overrideprotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState);}/** * 方法必须重写 */@Overrideprotected void onDestroy() { super.onDestroy(); mapView.onDestroy(); if (null != mlocationClient) { mlocationClient.onDestroy(); }}/** * 定位成功后回调函数 */@Overridepublic void onLocationChanged(AMapLocation amapLocation) { if (mListener != null && amapLocation != null) { if (amapLocation != null && amapLocation.getErrorCode() == 0) { mListener.onLocationChanged(amapLocation);// 显示系统小蓝点 amapLocation.getLocationType();// 获取当前定位结果来源,如网络定位结果,详见定位类型表 amapLocation.getLatitude();// 获取纬度 amapLocation.getLongitude();// 获取经度 amapLocation.getAccuracy();// 获取精度信息 amapLocation.getAddress();// 地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。 amapLocation.getCountry();// 国家信息 amapLocation.getProvince();// 省信息 amapLocation.getCity();// 城市信息 amapLocation.getDistrict();// 城区信息 amapLocation.getStreet();// 街道信息 amapLocation.getStreetNum();// 街道门牌号信息 amapLocation.getCityCode();// 城市编码 amapLocation.getAdCode();// 地区编码 amapLocation.getAoiName();// 获取当前定位点的AOI信息 Toast.makeText(MainActivity.this, amapLocation.getAddress(), 1) .show(); } else { String errText = "定位失败," + amapLocation.getErrorCode() + ": " + amapLocation.getErrorInfo(); Log.e("AmapErr", errText); } }}/** * 激活定位 */@Overridepublic void activate(OnLocationChangedListener listener) { mListener = listener; if (mlocationClient == null) { mlocationClient = new AMapLocationClient(this); mLocationOption = new AMapLocationClientOption(); // 设置定位监听 mlocationClient.setLocationListener(this); // 设置为高精度定位模式 mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy); // 设置定位参数 mlocationClient.setLocationOption(mLocationOption); // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求 // 在定位结束后,在合适的生命周期调用onDestroy()方法 // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除 mlocationClient.startLocation(); }}/** * 停止定位 */public void deactivate() { mListener = null; if (mlocationClient != null) { mlocationClient.stopLocation(); mlocationClient.onDestroy(); } mlocationClient = null;}public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {}// private void init() {// if (aMap == null) {// aMap = mapView.getMap();// setUpMap();// }// }//// private void setUpMap() {// aMap.setLocationSource(this);// 设置定位监听// aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示// aMap.setMyLocationEnabled(true);//// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false// // 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转几种// aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);// }//// @Override// public void activate(OnLocationChangedListener listener) {// // TODO Auto-generated method stub// mListener = listener;// if (mlocationClient == null) {// mlocationClient = new AMapLocationClient(this);// mLocationOption = new AMapLocationClientOption();// // 设置定位监听// mlocationClient.setLocationListener(this);// // 设置为高精度定位模式// mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);// // 设置定位参数// mlocationClient.setLocationOption(mLocationOption);// // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,// // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求// // 在定位结束后,在合适的生命周期调用onDestroy()方法// // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除// mlocationClient.startLocation();// }// }//// /**// * 方法必须重写// */// @Override// protected void onResume() {// super.onResume();// mapView.onResume();// }//// /**// * 方法必须重写// */// @Override// protected void onPause() {// super.onPause();// mapView.onPause();// deactivate();// }//// /**// * 方法必须重写// */// @Override// protected void onSaveInstanceState(Bundle outState) {// super.onSaveInstanceState(outState);// mapView.onSaveInstanceState(outState);// }//// /**// * 方法必须重写// */// @Override// protected void onDestroy() {// super.onDestroy();// mapView.onDestroy();// if (null != mlocationClient) {// mlocationClient.onDestroy();// }// }//// @Override// public void deactivate() {// // TODO Auto-generated method stub// mListener = null;// if (mlocationClient != null) {// mlocationClient.stopLocation();// mlocationClient.onDestroy();// }// mlocationClient = null;// }//// @Override// public void onLocationChanged(AMapLocation amapLocation) {// if (mListener != null && amapLocation != null) {// if (amapLocation != null && amapLocation.getErrorCode() == 0) {// mListener.onLocationChanged(amapLocation);// 显示系统小蓝点// amapLocation.getLocationType();// 获取当前定位结果来源,如网络定位结果,详见定位类型表// amapLocation.getLatitude();// 获取纬度// amapLocation.getLongitude();// 获取经度// amapLocation.getAccuracy();// 获取精度信息// amapLocation.getAddress();//// 地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。// amapLocation.getCountry();// 国家信息// amapLocation.getProvince();// 省信息// amapLocation.getCity();// 城市信息// amapLocation.getDistrict();// 城区信息// amapLocation.getStreet();// 街道信息// amapLocation.getStreetNum();// 街道门牌号信息// amapLocation.getCityCode();// 城市编码// amapLocation.getAdCode();// 地区编码// amapLocation.getAoiName();// 获取当前定位点的AOI信息//// Toast.makeText(MainActivity.this, amapLocation.getAddress(), 1)// .show();//// } else {// String errText = "定位失败," + amapLocation.getErrorCode() + ": "// + amapLocation.getErrorInfo();// Log.e("AmapErr", errText);//// }// }// }//// // @Override// // public void onClick(View v) {// // // TODO Auto-generated method stub// // aMap.clear();// 清理之前的图标// // String keyWord = ed_tv1.getText().toString().trim();// // query = new PoiSearch.Query(keyWord, "", "北京");// // query.setPageSize(10);// 设置每页最多返回多少条poiitem// // query.setPageNum(0);// 设置查询页码// // PoiSearch poiSearch = new PoiSearch(this, query);// 初始化poiSearch对象// // poiSearch.setOnPoiSearchListener(this);// 设置回调数据的监听器// // poiSearch.searchPOIAsyn();// 开始搜索// // }//// public void onPoiSearched(PoiResult result, int rCode) {// if (rCode == 1000) {// if (result != null && result.getQuery() != null) {// 搜索poi的结果// if (result.getQuery().equals(query)) {// 是否是同一条// poiResult = result;// // 取得搜索到的poiitems有多少页// List<PoiItem> poiItems = poiResult.getPois();// 取得第一页的poiitem数据,页数从数字0开始// List<SuggestionCity> suggestionCities = poiResult// .getSearchSuggestionCitys();// 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息//// if (poiItems != null && poiItems.size() > 0) {// aMap.clear();// 清理之前的图标// PoiOverlay poiOverlay = new PoiOverlay(aMap, poiItems);// poiOverlay.removeFromMap();// poiOverlay.addToMap();// poiOverlay.zoomToSpan();// } else if (suggestionCities != null// && suggestionCities.size() > 0) {// showSuggestCity(suggestionCities);// } else {// // ToastUtil.show(PoiKeywordSearchActivity.this,// // R.string.no_result);// }// }// } else {// // ToastUtil.show(PoiKeywordSearchActivity.this,// // R.string.no_result);// }// } else {// // ToastUtil.showerror(this, rCode);// }//// }//// private void showSuggestCity(List<SuggestionCity> suggestionCities) {// // TODO Auto-generated method stub//// }//// @Override// public void onPoiItemSearched(PoiItem arg0, int arg1) {// // TODO Auto-generated method stub//// }
- 高德地图定位
- 高德地图---定位
- 高德地图定位
- 高德定位
- 高德地图定位
- 高德定位集成
- 高德定位Dome
- 高德地图 - 定位
- 高德定位
- 高德地图定位
- 高德地图-定位
- 高德Android定位
- 高德地图定位
- 高德地图定位
- 高德地图定位
- 高德地图定位
- 高德定位
- 高德地图定位
- 指定ubuntu下的Python的运行版本
- MapReduce实例之PageRank
- 配置bean之你使用外部属性
- Java工程师裸辞之后的面试!!!
- 【OpenCV入门指南】第五篇 轮廓检测 上
- 高德定位
- 【OpenCV入门指南】第六篇 轮廓检测 下
- Servlet练习--第一个servlet程序
- 对CSDN的建议(二)
- 【OpenCV入门指南】第七篇 线段检测与圆检测
- i.mx6 yocto 找不到 SDL
- servlet&jsp简单登录验证
- 简易的音乐播放
- 关于stimulsoft reports 报表格式化format问题描述