package cn.coderss.baidulbs; import java.util.ArrayList; import java.util.HashMap; import android.annotation.SuppressLint; import android.app.ActionBar; import android.app.Activity; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; import cn.coderss.bean.UserBean; import cn.coderss.edu.R; import cn.coderss.util.L; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.geocode.*; /** * 此demo用来展示如何进行地理编码搜索(用地址检索坐标)、反地理编码搜索(用坐标检索地址) */ public class MyGeoCoder extends Activity implements OnGetGeoCoderResultListener { GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用 BaiduMap mBaiduMap = null; MapView mMapView = null; public static UserBean MyGeouser; ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>(); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_geocoder); CharSequence titleLable = "地理编码功能"; setTitle(titleLable); // 地图初始化 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); // 初始化搜索模块,注册事件监听 mSearch = GeoCoder.newInstance(); mSearch.setOnGetGeoCodeResultListener(this); // 默认搜索 L.i("经度位置:" + MyGeouser.address_X + ",纬度位置:" + MyGeouser.address_Y); LatLng ptCenter = new LatLng(Float.valueOf(MyGeouser.address_Y), Float.valueOf(MyGeouser.address_X)); mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(ptCenter)); setActionBar(); } @SuppressLint("NewApi") public void setActionBar() { ActionBar bar = getActionBar(); bar.setDisplayHomeAsUpEnabled(true); bar.setDisplayShowCustomEnabled(true); bar.setDisplayShowHomeEnabled(false); bar.setTitle("返回"); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } return true; } /** * 发起搜索 * * @param v */ public void SearchButtonProcess(View v) { if (v.getId() == R.id.reversegeocode) { EditText lat = (EditText) findViewById(R.id.lat); EditText lon = (EditText) findViewById(R.id.lon); LatLng ptCenter = new LatLng((Float.valueOf("31.276")), (Float.valueOf("121.524"))); // 反Geo搜索 mSearch.reverseGeoCode(new ReverseGeoCodeOption() .location(ptCenter)); } else if (v.getId() == R.id.geocode) { EditText editCity = (EditText) findViewById(R.id.city); EditText editGeoCodeKey = (EditText) findViewById(R.id.geocodekey); // Geo搜索 mSearch.geocode(new GeoCodeOption().city( editCity.getText().toString()).address( editGeoCodeKey.getText().toString())); } } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { mMapView.onDestroy(); mSearch.destroy(); super.onDestroy(); } @Override public void onGetGeoCodeResult(GeoCodeResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(MyGeoCoder.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(MyGeoCoder.this, strInfo, Toast.LENGTH_LONG).show(); } @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(MyGeoCoder.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())); Toast.makeText(MyGeoCoder.this, result.getAddress(), Toast.LENGTH_LONG) .show(); } }