📄 minigmap.java
字号:
package lordhong.apps;import java.util.ArrayList;import java.util.List;import org.xml.sax.SAXException;import lordhong.apps.DBHelper.AddressRow;import android.os.Bundle;import android.util.Log;import android.util.Xml;import android.view.KeyEvent;import android.view.View;import android.view.Window;import android.view.View.OnKeyListener;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;import com.google.android.maps.MapActivity;import com.google.android.maps.MapController;import com.google.android.maps.MapView;import com.google.android.maps.Point;public class MiniGMap extends MapActivity { private static MapView mapview; private static AutoCompleteTextView address; private DBHelper dbHelper; private ArrayList<String> addresses; private static final String LOGGER = "lordhong.miniGmap"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); ToolBar.setup(this); mapview = (MapView)findViewById(R.id.mapview); address = (AutoCompleteTextView)findViewById(R.id.address); address.setKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_DPAD_CENTER) { // get value from address auto-complete String addr = address.getText().toString(); Log.i(LOGGER, "addr: " + addr); // get lat. and long. from db DBHelper.AddressRow row = dbHelper.fetchRow(addr); if (row.rowId!=-1) { // navigate to geo location navigateToGeoCode(row.latitude, row.longitude); } else { // address not found, maybe a new address? try { String yahooGeoResponse = YahooGeoAPI.getGeoCode(addr); YahooGeocodeHandler handler = new YahooGeocodeHandler(); try { Xml.parse(yahooGeoResponse, handler); } catch (SAXException e) { Log.e(LOGGER, e.toString(), e); } Log.i(LOGGER, "latitude: " + handler.getLatitude()); Log.i(LOGGER, "Longitude: " + handler.getLongitude()); if (handler.getLatitudeAsLong()!=-1 && handler.getLongitudeAsLong()!=-1) { dbHelper.createRow(addr, handler.getLatitudeAsLong(), handler.getLongitudeAsLong()); navigateToGeoCode(handler.getLatitudeAsLong(), handler.getLongitudeAsLong()); // re-populate the addresses, including the new address populateAddresses(); } } catch (Exception e) { Log.e(LOGGER, "addr error from yahoo geo lookup: " + addr, e); } //Log.i("lordhong.miniGmap", "NOT FOUND!: " + addr); } } return false; } }); dbHelper = new DBHelper(this); populateAddresses(); } public static void zoomIn() { mapview.getController().zoomTo(mapview.getZoomLevel() + 1); } public static void zoomOut() { mapview.getController().zoomTo(mapview.getZoomLevel() - 1); } public static void satellite() { mapview.toggleSatellite(); } public static void traffic() { mapview.toggleTraffic(); } public static void enterAddress() { address.requestFocus(); address.setSelectAllOnFocus(true); } private void navigateToGeoCode(long latitude, long longitude) { Log.i(LOGGER, latitude+"--"+longitude); Point p = new Point((int)latitude, (int)longitude); MapController mc = mapview.getController(); mc.animateTo(p); mc.zoomTo(21); } public void populateAddresses() { addresses = new ArrayList<String>(); List<AddressRow> rows = dbHelper.fetchAllRows(); for (AddressRow row : rows) { addresses.add(row.address); } ArrayAdapter<String> addressAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, addresses); address.setAdapter(addressAdapter); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -