GitHub程式碼地址:
程式碼:https://github.com/zyc8023/Ivan/blob/master/MainActivity.java
清單檔案:https://github.com/zyc8023/Ivan/blob/master/AndroidManifest.xml
佈局檔案:https://github.com/zyc8023/Ivan/blob/master/activity_main.xml
產品設計方案
3.1 方案流程
根據需求分析,對產品方案進行分解劃分,並預留了升級介面和擴充套件欄位,以方便今後需求的刪減。為此我們制定了詳細的產品實現的流程。每個環節都可以參與進來。任何一個產品實現的過程中有意見,我們都可以進行修改。詳細產品實現流程請見下圖:
3.2 功能設計
3.2.1 App應用總體框架圖
暫時略
3.2.2 各類功能介紹
- 定位功能:定位當前位置
- 路線規劃功能:根據使用者互動輸入的需求,給出去使用者指定醫院的公交路線或者自駕路線(含有是否交通擁擠狀況)。
- 線上推薦功能:根據使用者互動輸入的需求,給出推薦的幾家優秀的醫院。
- 線上掛號功能:建立使用者和醫院的橋樑,實現網上掛號。
- 線上尋求專家功能:可以根據使用者的需求,推薦指定的醫生、專家,為使用者做出相應的指導。
- 線上購藥功能:借用網際網路的電子商務功能實現藥品線上銷售。
- 病例申請:使用者可以填寫資訊,一張病例,所有醫院共用。
- 遠端控制功能:物聯網的發展趨勢,跟多的醫療硬體與app相結合,實現遠端控制和只能操作。GSM SMS(簡訊傳送器)
3.2.3 購物車
已購藥品:顯示物品名稱、物品單價、總共價格、編輯數量、新增刪除藥品
確認訂單:等待使用者的確認支付。
3.2.4 我的訂單
在使用者支付之後,自動生成訂單,供使用者瀏覽和其他功能的使用,如退訂等功能。
3.2.5 活動(醫保卡)
優惠活動:你懂得。
3.2.6支付
支付寶、銀聯和微信支付
3.3 互動設計
互動簡潔清晰,突出核心功能。
可以提出的App產品的界更具體的面需求。(風格、顏色)
3.4 介面設計
符合的VI設計。
VI全稱Visual Identity, 即企業VI視覺設計,通譯為視覺識別系統。是將CI的非可視內容轉化為靜態的視覺識別符號。設計到位、實施科學的視覺識別系統,是傳播企業經營理念、建立企業知名度、塑造企業形象的快速便捷之途。企業通過VI設計,對內可以徵得員工的認同感,歸屬感,加強企業凝聚力,對外可以樹立企業的整體形象,資源整合,有控制的將企業的資訊傳達給受眾,通過視覺符碼,不斷的強化受眾的意識,從而獲得認同。VI為企業CIS中的一部分,企業CI包含三個方面。分為BI、MI、VI,三方面為行為識別,企業理念識別和視覺識別。
可以提出的App產品的界更具體的面需求。(風格、顏色)
3.5 定製平臺
暫時只有Android平臺
部分程式碼展示:
1 package com.example.hellomap; 2 3 import java.util.List; 4 5 import com.baidu.mapapi.SDKInitializer; 6 import com.baidu.mapapi.map.BaiduMap; 7 import com.baidu.mapapi.map.BitmapDescriptor; 8 import com.baidu.mapapi.map.BitmapDescriptorFactory; 9 import com.baidu.mapapi.map.MapView; 10 import com.baidu.mapapi.map.MarkerOptions; 11 import com.baidu.mapapi.map.OverlayOptions; 12 import com.baidu.mapapi.model.LatLng; 13 import com.baidu.mapapi.overlayutil.PoiOverlay; 14 import com.baidu.mapapi.search.core.PoiInfo; 15 import com.baidu.mapapi.search.core.SearchResult; 16 import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener; 17 import com.baidu.mapapi.search.poi.PoiBoundSearchOption; 18 import com.baidu.mapapi.search.poi.PoiCitySearchOption; 19 import com.baidu.mapapi.search.poi.PoiDetailResult; 20 import com.baidu.mapapi.search.poi.PoiDetailSearchOption; 21 import com.baidu.mapapi.search.poi.PoiNearbySearchOption; 22 import com.baidu.mapapi.search.poi.PoiResult; 23 import com.baidu.mapapi.search.poi.PoiSearch; 24 25 import android.nfc.Tag; 26 import android.os.Bundle; 27 import android.app.Activity; 28 import android.util.Log; 29 import android.view.Menu; 30 import android.view.MenuItem; 31 32 public class MainActivity extends Activity { 33 private MapView mMapView; 34 private BaiduMap mBaiduMap; 35 private PoiSearch mPoiSearch; 36 private BitmapDescriptor bitmapDescriptor; 37 38 @Override 39 protected void onCreate(Bundle savedInstanceState) { 40 super.onCreate(savedInstanceState); 41 SDKInitializer.initialize(getApplicationContext());// 初始化SDK 42 setContentView(R.layout.activity_main); 43 mMapView = (MapView) findViewById(R.id.bmapView);// 獲取MapView 44 45 // 生成圖示 46 bitmapDescriptor = BitmapDescriptorFactory 47 .fromResource(R.drawable.icon_marka); 48 49 mBaiduMap = mMapView.getMap();// 獲取地圖控制器 50 // 取得poi檢索的例項 51 mPoiSearch = PoiSearch.newInstance(); 52 // 設定poi檢索的監聽 53 mPoiSearch 54 .setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() { 55 56 @Override 57 public void onGetPoiResult(PoiResult result) { 58 59 if (result == null 60 || result.error != SearchResult.ERRORNO.NO_ERROR) { 61 System.out.println(SearchResult.ERRORNO.NO_ERROR); 62 Log.v("tag", "沒有找到相關結果"); 63 return; 64 } 65 /* 66 * List<PoiInfo> list = result.getAllPoi(); for (PoiInfo 67 * poiInfo : list) { Log.v("tag", poiInfo.name); 68 * 69 * OverlayOptions options = new MarkerOptions() 70 * .position(poiInfo.location).icon( bitmapDescriptor); 71 * 72 * mBaiduMap.addOverlay(options); } 73 */ 74 mBaiduMap.clear();// 每次選擇之前都要先清空地圖 75 PoiOverlay overlay = new MyOverlay(mBaiduMap); 76 overlay.setData(result); 77 overlay.addToMap(); 78 overlay.zoomToSpan(); 79 80 mBaiduMap.setOnMarkerClickListener(overlay); 81 82 } 83 84 @Override 85 public void onGetPoiDetailResult(PoiDetailResult result) { 86 if (result == null 87 || result.error != SearchResult.ERRORNO.NO_ERROR) { 88 System.out.println(SearchResult.ERRORNO.NO_ERROR); 89 Log.v("tag", "沒有找到相關結果"); 90 return; 91 } 92 Log.v("tag", result.getTelephone()); 93 Log.v("tag", String.valueOf(result.getPrice())); 94 95 } 96 }); 97 98 } 99 100 @Override 101 protected void onDestroy() { 102 super.onDestroy(); 103 mMapView.onDestroy(); 104 mPoiSearch.destroy();// 釋放資源 105 } 106 107 @Override 108 protected void onPause() { 109 super.onPause(); 110 mMapView.onPause(); 111 } 112 113 @Override 114 protected void onResume() { 115 super.onResume(); 116 mMapView.onResume(); 117 } 118 119 @Override 120 public boolean onCreateOptionsMenu(Menu menu) { 121 // Inflate the menu; this adds items to the action bar if it is present. 122 getMenuInflater().inflate(R.menu.main, menu); 123 return true; 124 } 125 126 /** 127 * 選單 128 */ 129 @Override 130 public boolean onMenuItemSelected(int featureId, MenuItem item) { 131 int id = item.getItemId(); 132 switch (id) { 133 case R.id.search_in_city: 134 mPoiSearch.searchInCity(new PoiCitySearchOption().city("濟南") 135 .keyword("醫院").pageNum(1).pageCapacity(10)); 136 break; 137 case R.id.search_nearby: 138 LatLng pt1 = new LatLng(39.93923, 116.357428); 139 mPoiSearch.searchNearby(new PoiNearbySearchOption().radius(1000) 140 .keyword("餐廳").pageNum(1).pageCapacity(10).location(pt1)); 141 break; 142 default: 143 break; 144 } 145 146 return super.onMenuItemSelected(featureId, item); 147 } 148 149 class MyOverlay extends PoiOverlay { 150 151 public MyOverlay(BaiduMap map) { 152 super(map); 153 } 154 155 @Override 156 public boolean onPoiClick(int i) { 157 List<PoiInfo> list = getPoiResult().getAllPoi(); 158 PoiInfo info = list.get(i); 159 Log.v("tag", info.name); 160 Log.v("tag", info.phoneNum); 161 Log.v("tag", info.city); 162 Log.v("tag", info.address); 163 164 if (info.hasCaterDetails) { 165 mPoiSearch.searchPoiDetail(new PoiDetailSearchOption() 166 .poiUid(info.uid)); 167 } 168 return super.onPoiClick(i); 169 } 170 } 171 172 }