a437ef42 by chiangbt

update 3.27.10.49

1 parent 9502c15b
This file is too large to display.
1 [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1},"path":"app-release.apk","properties":{"packageId":"com.pashanhoo.landsurvey","split":"","minSdkVersion":"21"}}]
...\ No newline at end of file ...\ No newline at end of file
...@@ -14,30 +14,35 @@ import android.widget.TextView; ...@@ -14,30 +14,35 @@ import android.widget.TextView;
14 14
15 import com.androidnetworking.AndroidNetworking; 15 import com.androidnetworking.AndroidNetworking;
16 import com.androidnetworking.error.ANError; 16 import com.androidnetworking.error.ANError;
17 import com.androidnetworking.interfaces.JSONArrayRequestListener;
18 import com.androidnetworking.interfaces.JSONObjectRequestListener; 17 import com.androidnetworking.interfaces.JSONObjectRequestListener;
19 import com.arlib.floatingsearchview.FloatingSearchView; 18 import com.arlib.floatingsearchview.FloatingSearchView;
20 import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion; 19 import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion;
20 import com.esri.android.map.GraphicsLayer;
21 import com.esri.android.map.LocationDisplayManager; 21 import com.esri.android.map.LocationDisplayManager;
22 import com.esri.android.map.MapView; 22 import com.esri.android.map.MapView;
23 import com.esri.android.map.event.OnStatusChangedListener; 23 import com.esri.android.map.event.OnStatusChangedListener;
24 import com.esri.android.map.event.OnZoomListener; 24 import com.esri.android.map.event.OnZoomListener;
25 import com.esri.android.runtime.ArcGISRuntime; 25 import com.esri.android.runtime.ArcGISRuntime;
26 import com.esri.core.geometry.Point; 26 import com.esri.core.geometry.Point;
27 import com.esri.core.map.Graphic;
28 import com.esri.core.symbol.PictureMarkerSymbol;
27 import com.pashanhoo.landsurvey.layers.tianditu.TDTTileinfo; 29 import com.pashanhoo.landsurvey.layers.tianditu.TDTTileinfo;
28 import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuLocalTiledMapServiceLayer; 30 import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuLocalTiledMapServiceLayer;
29 import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuTiledMapServiceLayer; 31 import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuTiledMapServiceLayer;
30 import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuTiledMapServiceType; 32 import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuTiledMapServiceType;
31 import com.pashanhoo.landsurvey.search.DataHelper; 33 import com.pashanhoo.landsurvey.search.POISuggestion;
32 import com.pashanhoo.landsurvey.utils.AppInfo; 34 import com.pashanhoo.landsurvey.utils.AppInfo;
33 35
34 import org.json.JSONArray; 36 import org.json.JSONArray;
35 import org.json.JSONException; 37 import org.json.JSONException;
36 import org.json.JSONObject; 38 import org.json.JSONObject;
37 39
40 import java.util.ArrayList;
41
38 public class MainActivity extends AppCompatActivity { 42 public class MainActivity extends AppCompatActivity {
39 43
40 private MapView mapView; 44 private MapView mapView;
45 private GraphicsLayer graphicsLayer;
41 private LocationDisplayManager locationDisplayManager; 46 private LocationDisplayManager locationDisplayManager;
42 private TianDiTuTiledMapServiceLayer t_vec; 47 private TianDiTuTiledMapServiceLayer t_vec;
43 private TianDiTuTiledMapServiceLayer t_cva; 48 private TianDiTuTiledMapServiceLayer t_cva;
...@@ -56,8 +61,8 @@ public class MainActivity extends AppCompatActivity { ...@@ -56,8 +61,8 @@ public class MainActivity extends AppCompatActivity {
56 super.onCreate(savedInstanceState); 61 super.onCreate(savedInstanceState);
57 setContentView(R.layout.activity_main); 62 setContentView(R.layout.activity_main);
58 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 63 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
59 mapinfoView = (TextView)findViewById(R.id.mapinfo); 64 mapinfoView = (TextView) findViewById(R.id.mapinfo);
60 floatingSearchView = (FloatingSearchView)findViewById(R.id.floating_search_view); 65 floatingSearchView = (FloatingSearchView) findViewById(R.id.floating_search_view);
61 setSupportActionBar(toolbar); 66 setSupportActionBar(toolbar);
62 //初始化------------------------------------------------------------------- 67 //初始化-------------------------------------------------------------------
63 AppInfo.Settings(); 68 AppInfo.Settings();
...@@ -66,10 +71,10 @@ public class MainActivity extends AppCompatActivity { ...@@ -66,10 +71,10 @@ public class MainActivity extends AppCompatActivity {
66 zoomin.setOnClickListener(new View.OnClickListener() { 71 zoomin.setOnClickListener(new View.OnClickListener() {
67 @Override 72 @Override
68 public void onClick(View view) { 73 public void onClick(View view) {
69 if(locationDisplayManager!=null){ 74 if (locationDisplayManager != null) {
70 locationDisplayManager.stop(); 75 locationDisplayManager.stop();
71 } 76 }
72 if(curLevel < 19) { 77 if (curLevel < 20) {
73 mapView.zoomin(true); 78 mapView.zoomin(true);
74 } 79 }
75 } 80 }
...@@ -78,10 +83,10 @@ public class MainActivity extends AppCompatActivity { ...@@ -78,10 +83,10 @@ public class MainActivity extends AppCompatActivity {
78 zoomout.setOnClickListener(new View.OnClickListener() { 83 zoomout.setOnClickListener(new View.OnClickListener() {
79 @Override 84 @Override
80 public void onClick(View view) { 85 public void onClick(View view) {
81 if(locationDisplayManager!=null){ 86 if (locationDisplayManager != null) {
82 locationDisplayManager.stop(); 87 locationDisplayManager.stop();
83 } 88 }
84 if(curLevel > 0) { 89 if (curLevel > 0) {
85 mapView.zoomout(true); 90 mapView.zoomout(true);
86 } 91 }
87 } 92 }
...@@ -93,16 +98,16 @@ public class MainActivity extends AppCompatActivity { ...@@ -93,16 +98,16 @@ public class MainActivity extends AppCompatActivity {
93 locationDisplayManager.stop(); 98 locationDisplayManager.stop();
94 mapView.zoomToResolution(AppInfo.initPoint, AppInfo.initRes); 99 mapView.zoomToResolution(AppInfo.initPoint, AppInfo.initRes);
95 curLevel = TDTTileinfo.getCurrentLevel(AppInfo.initRes); 100 curLevel = TDTTileinfo.getCurrentLevel(AppInfo.initRes);
96 mapinfoView.setText("当前地图级别为:"+ String.valueOf(curLevel)); 101 mapinfoView.setText("当前地图级别为:" + String.valueOf(curLevel));
97 } 102 }
98 }); 103 });
99 FloatingActionButton gps = (FloatingActionButton) findViewById(R.id.gps); 104 FloatingActionButton gps = (FloatingActionButton) findViewById(R.id.gps);
100 gps.setOnClickListener(new View.OnClickListener() { 105 gps.setOnClickListener(new View.OnClickListener() {
101 @Override 106 @Override
102 public void onClick(View view) { 107 public void onClick(View view) {
103 if(locationDisplayManager.isStarted()){ 108 if (locationDisplayManager.isStarted()) {
104 locationDisplayManager.stop(); 109 locationDisplayManager.stop();
105 }else{ 110 } else {
106 locationDisplayManager.start(); 111 locationDisplayManager.start();
107 mapView.zoomToResolution(locationDisplayManager.getPoint(), TDTTileinfo.getRes4490()[18]); 112 mapView.zoomToResolution(locationDisplayManager.getPoint(), TDTTileinfo.getRes4490()[18]);
108 } 113 }
...@@ -110,7 +115,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -110,7 +115,7 @@ public class MainActivity extends AppCompatActivity {
110 }); 115 });
111 //地图初始化------------------------------------------------------------------- 116 //地图初始化-------------------------------------------------------------------
112 ArcGISRuntime.setClientId("1eFHW78avlnRUPHm"); 117 ArcGISRuntime.setClientId("1eFHW78avlnRUPHm");
113 mapView = (MapView)findViewById(R.id.map); 118 mapView = (MapView) findViewById(R.id.map);
114 mapView.setEsriLogoVisible(false); 119 mapView.setEsriLogoVisible(false);
115 mapView.enableWrapAround(false); 120 mapView.enableWrapAround(false);
116 121
...@@ -130,17 +135,21 @@ public class MainActivity extends AppCompatActivity { ...@@ -130,17 +135,21 @@ public class MainActivity extends AppCompatActivity {
130 mapView.addLayer(t_cia); 135 mapView.addLayer(t_cia);
131 mapType = "VEC"; 136 mapType = "VEC";
132 137
138 graphicsLayer = new GraphicsLayer();
139 mapView.addLayer(graphicsLayer);
140
133 mapView.setMaxResolution(TDTTileinfo.getRes4490()[1]); 141 mapView.setMaxResolution(TDTTileinfo.getRes4490()[1]);
134 mapView.setMinResolution(TDTTileinfo.getRes4490()[18]); 142 mapView.setMinResolution(TDTTileinfo.getRes4490()[18]);
135 143
136 mapView.setOnStatusChangedListener(new OnStatusChangedListener() { 144 mapView.setOnStatusChangedListener(new OnStatusChangedListener() {
137 private static final long serialVersionUID = 1L; 145 private static final long serialVersionUID = 1L;
146
138 @Override 147 @Override
139 public void onStatusChanged(Object o, STATUS status) { 148 public void onStatusChanged(Object o, STATUS status) {
140 if(status == STATUS.INITIALIZED){ 149 if (status == STATUS.INITIALIZED) {
141 mapView.zoomToResolution(AppInfo.initPoint, AppInfo.initRes); 150 mapView.zoomToResolution(AppInfo.initPoint, AppInfo.initRes);
142 curLevel= TDTTileinfo.getCurrentLevel(AppInfo.initRes); 151 curLevel = TDTTileinfo.getCurrentLevel(AppInfo.initRes);
143 mapinfoView.setText("当前地图级别为:"+ String.valueOf(curLevel)); 152 mapinfoView.setText("当前地图级别为:" + String.valueOf(curLevel));
144 } 153 }
145 } 154 }
146 }); 155 });
...@@ -152,11 +161,11 @@ public class MainActivity extends AppCompatActivity { ...@@ -152,11 +161,11 @@ public class MainActivity extends AppCompatActivity {
152 @Override 161 @Override
153 public void postAction(float v, float v1, double v2) { 162 public void postAction(float v, float v1, double v2) {
154 curLevel = TDTTileinfo.getCurrentLevel(mapView.getResolution()); 163 curLevel = TDTTileinfo.getCurrentLevel(mapView.getResolution());
155 mapinfoView.setText("当前地图级别为:"+ String.valueOf(curLevel)); 164 mapinfoView.setText("当前地图级别为:" + String.valueOf(curLevel));
156 // t_local只有8和9级数据 165 // t_local只有8和9级数据
157 if(curLevel > 9 | curLevel <8){ 166 if (curLevel > 9 | curLevel < 8) {
158 t_local.setVisible(false); 167 t_local.setVisible(false);
159 }else{ 168 } else {
160 t_local.setVisible(true); 169 t_local.setVisible(true);
161 } 170 }
162 } 171 }
...@@ -186,16 +195,28 @@ public class MainActivity extends AppCompatActivity { ...@@ -186,16 +195,28 @@ public class MainActivity extends AppCompatActivity {
186 } 195 }
187 }); 196 });
188 197
198 // 处理浮动查询条
189 floatingSearchView.setOnSearchListener(new FloatingSearchView.OnSearchListener() { 199 floatingSearchView.setOnSearchListener(new FloatingSearchView.OnSearchListener() {
190 @Override 200 @Override
191 public void onSuggestionClicked(SearchSuggestion searchSuggestion) { 201 public void onSuggestionClicked(SearchSuggestion searchSuggestion) {
202 graphicsLayer.removeAll();
192 203
204 POISuggestion colorSuggestion = (POISuggestion) searchSuggestion;
205 Point poipt = new Point(colorSuggestion.getLng(), colorSuggestion.getLat());
206 mapView.zoomToResolution(poipt, TDTTileinfo.getRes4490()[18]);
207 graphicsLayer.addGraphic(new Graphic(poipt,
208 new PictureMarkerSymbol(getResources().getDrawable(R.mipmap.locator)).setOffsetY(16)));
209 // floatingSearchView.clearSuggestions();
210 curLevel = TDTTileinfo.getCurrentLevel(mapView.getResolution());
211 mapinfoView.setText("当前地图级别为:" + String.valueOf(curLevel));
193 } 212 }
194 213
195 @Override 214 @Override
196 public void onSearchAction(String currentQuery) { 215 public void onSearchAction(String currentQuery) {
197 if(currentQuery.length() > 3) { 216 if (currentQuery.length() > 3) {
198 String str = "{\"keyWord\":\""+ currentQuery +"\",\"level\":\"11\",\"mapBound\":\"76.24832,30.1129,156.40458,49.97618\",\"queryType\":\"1\",\"count\":\"10\",\"start\":\"0\",\"queryTerminal\":\"1000\"}"; 217 floatingSearchView.clearSuggestions();
218
219 String str = "{\"keyWord\":\"" + currentQuery + "\",\"level\":\"11\",\"mapBound\":\"76.24832,30.1129,156.40458,49.97618\",\"queryType\":\"1\",\"count\":\"10\",\"start\":\"0\",\"queryTerminal\":\"1000\"}";
199 AndroidNetworking.post("http://map.tianditu.com/query.shtml") 220 AndroidNetworking.post("http://map.tianditu.com/query.shtml")
200 .addBodyParameter("type", "query") 221 .addBodyParameter("type", "query")
201 .addBodyParameter("postStr", str) 222 .addBodyParameter("postStr", str)
...@@ -207,12 +228,14 @@ public class MainActivity extends AppCompatActivity { ...@@ -207,12 +228,14 @@ public class MainActivity extends AppCompatActivity {
207 JSONArray Jarray = null; 228 JSONArray Jarray = null;
208 try { 229 try {
209 Jarray = response.getJSONArray("pois"); 230 Jarray = response.getJSONArray("pois");
210 for (int i = 0; i < Jarray.length(); i++) 231 ArrayList<POISuggestion> poiSuggestions = new ArrayList<POISuggestion>();
211 { 232 for (int i = 0; i < Jarray.length(); i++) {
212 JSONObject Jasonobject = Jarray.getJSONObject(i); 233 JSONObject Jasonobject = Jarray.getJSONObject(i);
213 Log.i("b", Jasonobject.getString("name")); 234 poiSuggestions.add(new POISuggestion(Jasonobject.getString("name"),
214 235 Jasonobject.getString("address"),
236 Jasonobject.getString("lonlat")));
215 } 237 }
238 floatingSearchView.swapSuggestions(poiSuggestions);
216 } catch (JSONException e) { 239 } catch (JSONException e) {
217 e.printStackTrace(); 240 e.printStackTrace();
218 } 241 }
...@@ -226,25 +249,13 @@ public class MainActivity extends AppCompatActivity { ...@@ -226,25 +249,13 @@ public class MainActivity extends AppCompatActivity {
226 } 249 }
227 } 250 }
228 }); 251 });
229 // floatingSearchView.setOnQueryChangeListener(new FloatingSearchView.OnQueryChangeListener() {
230 // @Override
231 // public void onSearchTextChanged(String oldQuery, String newQuery) {
232 // if (!oldQuery.equals("") && newQuery.equals("")) {
233 // floatingSearchView.clearSuggestions();
234 // } else{
235 // if(newQuery.length()>3){
236 //
237 // }
238 // }
239 // }
240 // });
241 } 252 }
242 253
243 @Override 254 @Override
244 public void onResume() { 255 public void onResume() {
245 super.onResume(); 256 super.onResume();
246 mapView.unpause(); 257 mapView.unpause();
247 if(locationDisplayManager!=null){ 258 if (locationDisplayManager != null) {
248 locationDisplayManager.resume(); 259 locationDisplayManager.resume();
249 } 260 }
250 } 261 }
...@@ -253,7 +264,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -253,7 +264,7 @@ public class MainActivity extends AppCompatActivity {
253 public void onPause() { 264 public void onPause() {
254 super.onPause(); 265 super.onPause();
255 mapView.pause(); 266 mapView.pause();
256 if(locationDisplayManager!=null){ 267 if (locationDisplayManager != null) {
257 locationDisplayManager.pause(); 268 locationDisplayManager.pause();
258 } 269 }
259 } 270 }
...@@ -261,7 +272,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -261,7 +272,7 @@ public class MainActivity extends AppCompatActivity {
261 @Override 272 @Override
262 public void onStop() { 273 public void onStop() {
263 super.onStop(); 274 super.onStop();
264 if(locationDisplayManager!=null){ 275 if (locationDisplayManager != null) {
265 locationDisplayManager.stop(); 276 locationDisplayManager.stop();
266 } 277 }
267 278
...@@ -283,10 +294,10 @@ public class MainActivity extends AppCompatActivity { ...@@ -283,10 +294,10 @@ public class MainActivity extends AppCompatActivity {
283 294
284 //noinspection SimplifiableIfStatement 295 //noinspection SimplifiableIfStatement
285 if (id == R.id.action_settings) { 296 if (id == R.id.action_settings) {
286 if(mapType == "VEC"){ 297 if (mapType == "VEC") {
287 setLayer("IMG"); 298 setLayer("IMG");
288 mapType = "IMG"; 299 mapType = "IMG";
289 }else{ 300 } else {
290 setLayer("VEC"); 301 setLayer("VEC");
291 mapType = "VEC"; 302 mapType = "VEC";
292 } 303 }
...@@ -297,8 +308,8 @@ public class MainActivity extends AppCompatActivity { ...@@ -297,8 +308,8 @@ public class MainActivity extends AppCompatActivity {
297 } 308 }
298 309
299 // 切换地图形式 310 // 切换地图形式
300 private void setLayer(String type){ 311 private void setLayer(String type) {
301 switch (type){ 312 switch (type) {
302 case "VEC": 313 case "VEC":
303 t_vec.setVisible(true); 314 t_vec.setVisible(true);
304 t_cva.setVisible(true); 315 t_cva.setVisible(true);
......
1 package com.pashanhoo.landsurvey.search;
2
3 import android.content.Context;
4 import android.support.v4.view.AsyncLayoutInflater;
5 import android.widget.Filter;
6
7 import com.arlib.floatingsearchview.FloatingSearchView;
8
9
10 /**
11 * Created by jiangbotao on 2018/3/27.
12 */
13
14 public class DataHelper {
15
16 public interface OnFindSuggestionsListener {
17 void onResults(String[] results);
18 }
19
20 public static void findSuggestions(FloatingSearchView.OnQueryChangeListener context, String query, final int limit, final long simulatedDelay, final OnFindSuggestionsListener listener){
21 new Filter(){
22
23 @Override
24 protected FilterResults performFiltering(CharSequence constraint) {
25 try {
26 Thread.sleep(simulatedDelay);
27 } catch (InterruptedException e) {
28 e.printStackTrace();
29 }
30 FilterResults results = new FilterResults();
31 return results;
32 }
33
34 @Override
35 protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
36
37 }
38
39
40 }.filter(query);
41 }
42 }
1 package com.pashanhoo.landsurvey.search;
2
3 import android.annotation.SuppressLint;
4 import android.os.Parcel;
5
6 import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion;
7
8 /**
9 * Created by jiangbotao on 2018/3/27.
10 */
11
12 @SuppressLint("ParcelCreator")
13 public class POISuggestion implements SearchSuggestion {
14
15 private String name;
16
17 private String address;
18
19 private float lng;
20
21 private float lat;
22
23 private boolean mIsHistory = false;
24
25 public POISuggestion(String suggestion){
26 this.name = suggestion.toLowerCase();
27 }
28
29 public POISuggestion(String name, String address, String lonlat){
30 this.name = name;
31 this.address = address;
32 String[] position = lonlat.split(" ");
33 this.lng = Float.parseFloat((position[0]));
34 this.lat = Float.parseFloat(position[1]);
35 }
36
37 public POISuggestion(Parcel source) {
38 this.name = source.readString();
39 this.mIsHistory = source.readInt() != 0;
40 }
41
42 public void setIsHistory(boolean isHistory) {
43 this.mIsHistory = isHistory;
44 }
45
46 public boolean getIsHistory() {
47 return this.mIsHistory;
48 }
49
50 @Override
51 public String getBody() {
52 return name;
53 }
54
55 @Override
56 public int describeContents() {
57 return 0;
58 }
59
60 @Override
61 public void writeToParcel(Parcel parcel, int i) {
62 parcel.writeString(name);
63 parcel.writeInt(mIsHistory ? 1 : 0);
64 }
65
66 public static final Creator<POISuggestion> CREATOR = new Creator<POISuggestion>() {
67 @Override
68 public POISuggestion createFromParcel(Parcel in) {
69 return new POISuggestion(in);
70 }
71
72 @Override
73 public POISuggestion[] newArray(int size) {
74 return new POISuggestion[size];
75 }
76 };
77
78 public String getAddress() {
79 return address;
80 }
81
82 public void setAddress(String address) {
83 this.address = address;
84 }
85
86 public float getLng() {
87 return lng;
88 }
89
90 public void setLng(long lng) {
91 this.lng = lng;
92 }
93
94 public float getLat() {
95 return lat;
96 }
97
98 public void setLat(long lat) {
99 this.lat = lat;
100 }
101 }
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
33 app:floatingSearch_searchHint="地名地址检索..." 33 app:floatingSearch_searchHint="地名地址检索..."
34 app:floatingSearch_suggestionsListAnimDuration="250" 34 app:floatingSearch_suggestionsListAnimDuration="250"
35 app:floatingSearch_showSearchKey="false" 35 app:floatingSearch_showSearchKey="false"
36 app:floatingSearch_leftActionMode="showSearch"
36 app:floatingSearch_menu="@menu/menu_main" 37 app:floatingSearch_menu="@menu/menu_main"
37 app:floatingSearch_close_search_on_keyboard_dismiss="true"/> 38 app:floatingSearch_close_search_on_keyboard_dismiss="true"/>
38 39
......