1.activity_main.xml 在地圖下方加入下拉式選單
2.MainActivity.java 以基隆市、台北市85度c為例
private float coordinate[][][] = { { { 0, (float) 25.1288160, (float) 121.7404860 }, { 0, (float) 25.1286310, (float) 121.7594120 }, { 0, (float) 25.0972380, (float) 121.7122780 } }, { { 1, (float) 25.0574640, (float) 121.5554840 }, { 1, (float) 24.9836380, (float) 121.5673320 }, { 1, (float) 25.0310780, (float) 121.5522090 } }, }; //設定定點座標 private String[] type = new String[] { "基隆市", "台北市" }; //第一個選單 private String[] locationName = new String[] { "85度c基隆孝一店", "85度c基隆東信店","85度c七堵明德店" }; //初始選單 private String[][] type2 = new String[][] { { "85度c基隆孝一店", "85度c基隆東信店", "85度c七堵明德店" }, { "85度c台北光復北店", "85度c木柵木新店", "85度c台北安和店" } };//第二個選單 private Spinner sp1;// 第一個下拉選單 private Spinner sp2;// 第二個下拉選單 private Context context; ArrayAdapter參考來源: http://jim690701.blogspot.tw/2012/07/androidspinner_15.htmladapter; ArrayAdapter adapter2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; // 程式剛啟動時載入第一個下拉選單 adapter = new ArrayAdapter (this, android.R.layout.simple_spinner_item, type); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp1 = (Spinner) findViewById(R.id.type); sp1.setAdapter(adapter); //將adapter加入sp1選單 sp1.setOnItemSelectedListener(selectListener); //第一個選單監聽動作 // 程式剛啟動時載入第一個下拉選單,所以第二選單要載入第一個選單的子項目 adapter2 = new ArrayAdapter (this, android.R.layout.simple_spinner_item, locationName); adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp2 = (Spinner) findViewById(R.id.type2); sp2.setAdapter(adapter2); //將adapter加入sp2選單 sp2.setOnItemSelectedListener(selectListener2); //第二個選單監聽動作 } // 第一個下拉選單監聽動作 private OnItemSelectedListener selectListener = new OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View v, int position, long id) { // 讀取第一個下拉選單是選擇第幾個 int pos = sp1.getSelectedItemPosition(); // 重新產生新的Adapter,用的是二維陣列type2[pos] adapter2 = new ArrayAdapter (context, android.R.layout.simple_spinner_item, type2[pos]); // 載入第二個下拉選單Spinner sp2.setAdapter(adapter2); } public void onNothingSelected(AdapterView arg0) { } }; // 第二個下拉選單監聽動作 private OnItemSelectedListener selectListener2 = new OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View v, int position, long id) { setMapLocation(); //移動到選定項目位置的動作 } public void onNothingSelected(AdapterView arg0) { } }; public void setMapLocation() { try { int iSelect1 = sp1.getSelectedItemPosition(); //第一個下拉選單被選到的第幾個項目 int iSelect2 = sp2.getSelectedItemPosition(); //第二個下拉選單被選到的第幾個項目 double dLat = coordinate[iSelect1][iSelect2][1]; // 抓取座標,南北緯 double dLon = coordinate[iSelect1][iSelect2][2]; // 抓取座標,東西經 LatLng gg = new LatLng(dLat, dLon); //將座標位置輸入設定 map.moveCamera(CameraUpdateFactory.newLatLng(gg)); //移動到定點 map.animateCamera(CameraUpdateFactory.zoomTo(15)); //縮放 } catch (NullPointerException e) { Log.i("myLocation", "NullPointException"); } }
沒有留言 :
張貼留言