定位到自己输入的地址的地方

先上效果:

首先需要定位,打开程序自动定位到自己所在的位置,然后输入城市和详细地址,定位。

mainactivity代码全部如下:

package com.yqy.locgeodemo;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.Toast;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.search.core.SearchResult;import com.baidu.mapapi.search.geocode.GeoCodeOption;import com.baidu.mapapi.search.geocode.GeoCodeResult;import com.baidu.mapapi.search.geocode.GeoCoder;import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;public class MainActivity extends Activity implementsOnGetGeoCoderResultListener {GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用// 定位相关LocationClient mLocClient;public MyLocationListenner myListener = new MyLocationListenner();BitmapDescriptor mCurrentMarker;MapView mMapView;BaiduMap mBaiduMap;// UI相关OnCheckedChangeListener radioButtonListener;Button requestLocButton;boolean isFirstLoc = true;// 是否首次定位@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 地图初始化mMapView = (MapView) findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();// 开启定位图层mBaiduMap.setMyLocationEnabled(true);// 定位初始化mLocClient = new LocationClient(this);mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setScanSpan(1000);mLocClient.setLocOption(option);mLocClient.start();// 初始化搜索模块,注册事件监听mSearch = GeoCoder.newInstance();mSearch.setOnGetGeoCodeResultListener(this);Button btn_search = (Button) findViewById(R.id.btn_search);btn_search.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {SearchButtonProcess();}});}/** * 发起地址搜索 *  * @param v */public void SearchButtonProcess() {EditText editCity = (EditText) findViewById(R.id.et_city);EditText editGeoCodeKey = (EditText) findViewById(R.id.et_addr);// Geo搜索mSearch.geocode(new GeoCodeOption().city(editCity.getText().toString()).address(editGeoCodeKey.getText().toString()));}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}/** * 定位SDK监听函数 */public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {// map view 销毁后不在处理新接收的位置if (location == null || mMapView == null)return;MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u);}}public void onReceivePoi(BDLocation poiLocation) {}}@Overrideprotected void onPause() {mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {// 退出时销毁定位mLocClient.stop();mSearch.destroy();// 关闭定位图层mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();}/** * 地址搜索返回结果 */@Overridepublic void onGetGeoCodeResult(GeoCodeResult result) {if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(MainActivity.this, "抱歉,未能找到结果", Toast.LENGTH_LONG).show();return;}mBaiduMap.clear();mBaiduMap.addOverlay(new MarkerOptions().position(result.getLocation()).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marka)));mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(result.getLocation()));String strInfo = String.format("纬度:%f 经度:%f",result.getLocation().latitude, result.getLocation().longitude);Toast.makeText(MainActivity.this, strInfo, Toast.LENGTH_LONG).show();}@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {}}


DemoApplication.java:

package com.yqy.locgeodemo;import android.app.Application;import com.baidu.mapapi.SDKInitializer;public class DemoApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// 在使�? SDK 各组间之前初始化 context 信息,传�? ApplicationContextSDKInitializer.initialize(this);}}


项目demo

下载地址为:

android 定位到输入的地址

更多相关文章

  1. 实现查询地址和路线导航的代码
  2. Android(安卓)Fragment学习笔记(二)
  3. Android(安卓)MMS/SMS 入口
  4. Android(安卓)CircularFloatingActionMenu在ScrollView这样的滚
  5. 抓包工具TcpDump for Android(安卓)+ wireshark
  6. 充电clientandroid电池(五):电池 充电IC(PM2301)驱动分析篇
  7. ArcGIS for android 简单使用(一):环境配置与定位当前位置,放大,缩小
  8. Android(安卓)MMS/SMS(二)
  9. Unity与Android交互-案例演示接入穿山甲广告SDK(二)

随机推荐

  1. android中http访问总结
  2. Android(安卓)SDK 2.2 下载安装方法
  3. Android(安卓)属性动画 源码解析 深入了
  4. android系统信息(内存、cpu、sd卡、电量、
  5. Android中使用log4j
  6. Android中GridView组件的使用
  7. Android(安卓)事件触发机制
  8. Android热插拔事件处理流程--Vold
  9. 关于Android方法数量限制的问题
  10. Android(安卓)HLS协议相关记录及部分解析