package iShamrock.Postal.activity.publishers; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.*; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.search.core.PoiInfo; import com.baidu.mapapi.search.geocode.*; import iShamrock.Postal.R; import iShamrock.Postal.util.BaiduLocUtil; import iShamrock.Postal.util.BaiduMapUtil; import java.util.ArrayList; import java.util.List; /** * Created by Tong on 02.18. */ public class GeoEncodingActivity extends Activity { private MapView mMapView; private BaiduMap mBaiduMap; private BaiduMapUtil baiduMapUtil; private TextView geo_address; private ImageView geo_cancel, geo_ok; private ListView geo_list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.geo_encoding); initCommonComponents(); initGeoComponents(); } private void initGeoComponents() { mBaiduMap = mMapView.getMap(); baiduMapUtil = new BaiduMapUtil(); baiduMapUtil.initialize(getApplicationContext(), mBaiduMap, mMapView); /*TODO: Yet the null location has not been dealt.*/ if (BaiduLocUtil.location != null) baiduMapUtil.locateTo(BaiduLocUtil.location); LatLng latLng = new LatLng(BaiduLocUtil.location.getLatitude(), BaiduLocUtil.location.getLongitude()); ReverseGeoCodeOption reverseGeoCodeOption = new ReverseGeoCodeOption().location(latLng); final GeoCoder geocoder = GeoCoder.newInstance(); Boolean geoCodingIsSuccessful = geocoder.reverseGeoCode(reverseGeoCodeOption); geocoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() { @Override public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) { // This will never be executed. } @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) { GeoEncodingActivity.this.geo_address.setText(reverseGeoCodeResult.getAddress()); List<PoiInfo> poiInfos = reverseGeoCodeResult.getPoiList(); List<String> names = new ArrayList<String>(); for (PoiInfo poiInfo : poiInfos) names.add(poiInfo.name); geo_list.setAdapter(new ArrayAdapter<String>(GeoEncodingActivity.this, R.layout.geo_listview, names)); geo_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { String geoEncoding = adapterView.getAdapter().getItem(i).toString(); Intent intent = new Intent(); intent.putExtra("GeoEncoding", geoEncoding); setResult(JEditor.REQUEST_LOCATION, intent); finish(); } }); } }); } public void initCommonComponents() { geo_address = (TextView) findViewById(R.id.geo_text_address); geo_cancel = (ImageView) findViewById(R.id.geo_cancel); geo_ok = (ImageView) findViewById(R.id.geo_ok); mMapView = (MapView) findViewById(R.id.geo_bmap); geo_list = (ListView) findViewById(R.id.geo_list); geo_cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra("GeoEncoding", ""); setResult(JEditor.REQUEST_LOCATION, intent); finish(); } }); } }