We apply city menu in Taiwan for app. You can choose city to position the map. "P" for Position."G" for focusing in city menu.
加入各縣市表單,你可以更進一步地定位Google map。
1.
mapdemo.java:再將
上一篇的程式碼主要加上籃色部份,其他部份亦有加上小部份修改,P為定位、G為到城市選單。
package com.test.demo;
import com.google.android.maps.MapActivity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.ArrayAdapter; import android.widget.Spinner; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Point;
public class mapdemo extends MapActivity{ /** Called when the activity is first created. */ public static final int change = 3000; private MapView mapView; private MapController mapConrtoller; private Spinner s1;
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main);
s1 = (Spinner) findViewById(R.id.spinner1); Spinner s1 = (Spinner) findViewById(R.id.spinner1); ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.city, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s1.setAdapter(adapter);
mapView =(MapView) findViewById(R.id.my_map); mapConrtoller = mapView.getController(); mapConrtoller.zoomTo(17); updateView(); }
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_I) { mapView.requestFocus(); // zoom in mapView.getController().zoomTo(mapView.getZoomLevel() + 1); return true; } else if (keyCode == KeyEvent.KEYCODE_P) { // position Double lat=0.0; Double lng=0.0; if(s1.getSelectedItemIndex()==0){ lat = 25.08421662*1E6; lng = 121.5588632*1E6; }else if(s1.getSelectedItemIndex()==1){ lat = 25.156109*1E6; lng = 121.695457*1E6; }else if(s1.getSelectedItemIndex()==2){ lat = 25.02723286*1E6; lng = 121.4777282*1E6; }else if(s1.getSelectedItemIndex()==3){ lat = 24.766944444*1E6; lng = 121.758333333*1E6; }else if(s1.getSelectedItemIndex()==4){ lat = 24.7952904064701*1E6; lng = 121.005980402031*1E6; }else if(s1.getSelectedItemIndex()==5){ lat = 25.01049145*1E6; lng = 121.2988981*1E6; }else if(s1.getSelectedItemIndex()==6){ lat = 24.6929396881103*1E6; lng = 120.916988073054*1E6; }else if(s1.getSelectedItemIndex()==7){ lat = 24.165632*1E6; lng = 120.640234*1E6; }else if(s1.getSelectedItemIndex()==8){ lat = 24.085467449249*1E6; lng = 120.53489812506*1E6; }else if(s1.getSelectedItemIndex()==9){ lat = 23.831933886322*1E6; lng = 120.71674349869*1E6; }else if(s1.getSelectedItemIndex()==10){ lat = 23.4670607206971*1E6; lng = 120.424347942069*1E6; }else if(s1.getSelectedItemIndex()==11){ lat = 23.68080782*1E6; lng = 120.4857101*1E6; }else if(s1.getSelectedItemIndex()==12){ lat = 23.015307619667*1E6; lng = 120.19802892001*1E6; }else if(s1.getSelectedItemIndex()==13){ lat = 22.6516357159836*1E6; lng = 120.305947184541*1E6; } else if(s1.getSelectedItemIndex()==14){ lat = 22.568397*1E6; lng = 120.539828*1E6; } else if(s1.getSelectedItemIndex()==15){ lat = 22.736944444*1E6; lng = 121.122777778*1E6; }else if(s1.getSelectedItemIndex()==16){ lat = 23.973333333*1E6; lng = 121.588055556*1E6; } Point point = new Point(lat.intValue(), lng.intValue()); mapConrtoller.centerMapTo(point, false); mapView.requestFocus(); return true; }else if (keyCode == KeyEvent.KEYCODE_G) { // zoom out s1.requestFocus(); return true; }else if (keyCode == KeyEvent.KEYCODE_O) { mapView.requestFocus(); // zoom out mapView.getController().zoomTo(mapView.getZoomLevel() - 1); return true; } else if (keyCode == KeyEvent.KEYCODE_S) { mapView.requestFocus(); // Satellite,衛星地图 if(!mapView.isSatellite()){ mapView.toggleSatellite(); } return true; } else if (keyCode == KeyEvent.KEYCODE_M) { mapView.requestFocus(); // traffic,路况 if(mapView.isSatellite()){ mapView.toggleSatellite(); } return true; } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
mapView.requestFocus(); Double lat = mapView.getMapCenter().getLatitudeE6()/1.0; Double lng = mapView.getMapCenter().getLongitudeE6()/1.0; lat=lat+change; Point point = new Point(lat.intValue(),lng.intValue()); mapConrtoller.animateTo(point); return true; } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { mapView.requestFocus(); Double lat = mapView.getMapCenter().getLatitudeE6()/1.0; Double lng = mapView.getMapCenter().getLongitudeE6()/1.0; lat=lat-change; Point point = new Point(lat.intValue(),lng.intValue()); mapConrtoller.animateTo(point); return true;
} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { mapView.requestFocus(); Double lat = mapView.getMapCenter().getLatitudeE6()/1.0; Double lng = mapView.getMapCenter().getLongitudeE6()/1.0; lng=lng-change; Point point = new Point(lat.intValue(),lng.intValue()); mapConrtoller.animateTo(point); return true; } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { mapView.requestFocus(); Double lat = mapView.getMapCenter().getLatitudeE6()/1.0; Double lng = mapView.getMapCenter().getLongitudeE6()/1.0; lng=lng+change; Point point = new Point(lat.intValue(),lng.intValue()); mapConrtoller.animateTo(point); return true; } return false; }
private void updateView(){ Double lat = 25.025708*1E6; Double lng = 121.526403*1E6; Point point = new Point(lat.intValue(), lng.intValue()); mapConrtoller.centerMapTo(point, false); }
}
|
2.
arrays.xml:在目錄res下的values目錄下建立一arrays.xml,是要存放城市表單內容。
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="city"> <item>台北市</item> <item>基隆市</item> <item>台北縣</item> <item>宜蘭縣</item> <item>新竹市</item> <item>桃園市</item> <item>苗栗縣</item> <item>台中市</item> <item>彰化縣</item> <item>南投縣</item> <item>嘉義市</item> <item>雲林縣</item> <item>臺南市</item> <item>高雄市</item> <item>屏東縣</item> <item>臺東縣</item> <item>花蓮縣</item> </array> </resources> |
3.
main.xml:加入選單
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <view id="@+id/my_map" class="com.google.android.maps.MapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" /> <Spinner id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="true" /> </LinearLayout>
|
沒有留言:
張貼留言