first commit
0 parents
Showing
57 changed files
with
1876 additions
and
0 deletions
.gitignore
0 → 100644
.idea/gradle.xml
0 → 100644
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <project version="4"> | ||
3 | <component name="GradleSettings"> | ||
4 | <option name="linkedExternalProjectsSettings"> | ||
5 | <GradleProjectSettings> | ||
6 | <option name="distributionType" value="DEFAULT_WRAPPED" /> | ||
7 | <option name="externalProjectPath" value="$PROJECT_DIR$" /> | ||
8 | <option name="modules"> | ||
9 | <set> | ||
10 | <option value="$PROJECT_DIR$" /> | ||
11 | <option value="$PROJECT_DIR$/app" /> | ||
12 | </set> | ||
13 | </option> | ||
14 | <option name="resolveModulePerSourceSet" value="false" /> | ||
15 | </GradleProjectSettings> | ||
16 | </option> | ||
17 | </component> | ||
18 | </project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
.idea/misc.xml
0 → 100644
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <project version="4"> | ||
3 | <component name="NullableNotNullManager"> | ||
4 | <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> | ||
5 | <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> | ||
6 | <option name="myNullables"> | ||
7 | <value> | ||
8 | <list size="4"> | ||
9 | <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> | ||
10 | <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> | ||
11 | <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> | ||
12 | <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> | ||
13 | </list> | ||
14 | </value> | ||
15 | </option> | ||
16 | <option name="myNotNulls"> | ||
17 | <value> | ||
18 | <list size="4"> | ||
19 | <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> | ||
20 | <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> | ||
21 | <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> | ||
22 | <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> | ||
23 | </list> | ||
24 | </value> | ||
25 | </option> | ||
26 | </component> | ||
27 | <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK"> | ||
28 | <output url="file://$PROJECT_DIR$/build/classes" /> | ||
29 | </component> | ||
30 | <component name="ProjectType"> | ||
31 | <option name="id" value="Android" /> | ||
32 | </component> | ||
33 | </project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
.idea/modules.xml
0 → 100644
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <project version="4"> | ||
3 | <component name="ProjectModuleManager"> | ||
4 | <modules> | ||
5 | <module fileurl="file://$PROJECT_DIR$/LandSurvey.iml" filepath="$PROJECT_DIR$/LandSurvey.iml" /> | ||
6 | <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> | ||
7 | </modules> | ||
8 | </component> | ||
9 | </project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
.idea/runConfigurations.xml
0 → 100644
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <project version="4"> | ||
3 | <component name="RunConfigurationProducerService"> | ||
4 | <option name="ignoredProducers"> | ||
5 | <set> | ||
6 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> | ||
7 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> | ||
8 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> | ||
9 | </set> | ||
10 | </option> | ||
11 | </component> | ||
12 | </project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
app/.gitignore
0 → 100644
1 | /build |
app/build.gradle
0 → 100644
1 | apply plugin: 'com.android.application' | ||
2 | |||
3 | android { | ||
4 | compileSdkVersion 26 | ||
5 | defaultConfig { | ||
6 | applicationId "com.pashanhoo.landsurvey" | ||
7 | minSdkVersion 21 | ||
8 | targetSdkVersion 26 | ||
9 | versionCode 1 | ||
10 | versionName "1.0" | ||
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||
12 | } | ||
13 | packagingOptions { | ||
14 | exclude 'META-INF/LGPL2.1' | ||
15 | exclude 'META-INF/LICENSE' | ||
16 | exclude 'META-INF/NOTICE' | ||
17 | } | ||
18 | buildTypes { | ||
19 | release { | ||
20 | minifyEnabled false | ||
21 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
22 | } | ||
23 | } | ||
24 | } | ||
25 | |||
26 | dependencies { | ||
27 | compile 'com.esri.arcgis.android:arcgis-android:10.2.9' | ||
28 | compile 'com.mikepenz:fontawesome-typeface:4.7.0.0@aar' | ||
29 | |||
30 | implementation fileTree(dir: 'libs', include: ['*.jar']) | ||
31 | implementation 'com.android.support:appcompat-v7:26.1.0' | ||
32 | implementation 'com.android.support.constraint:constraint-layout:1.0.2' | ||
33 | implementation 'com.android.support:design:26.1.0' | ||
34 | testImplementation 'junit:junit:4.12' | ||
35 | androidTestImplementation 'com.android.support.test:runner:1.0.1' | ||
36 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' | ||
37 | } |
app/proguard-rules.pro
0 → 100644
1 | # Add project specific ProGuard rules here. | ||
2 | # You can control the set of applied configuration files using the | ||
3 | # proguardFiles setting in build.gradle. | ||
4 | # | ||
5 | # For more details, see | ||
6 | # http://developer.android.com/guide/developing/tools/proguard.html | ||
7 | |||
8 | # If your project uses WebView with JS, uncomment the following | ||
9 | # and specify the fully qualified class name to the JavaScript interface | ||
10 | # class: | ||
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
12 | # public *; | ||
13 | #} | ||
14 | |||
15 | # Uncomment this to preserve the line number information for | ||
16 | # debugging stack traces. | ||
17 | #-keepattributes SourceFile,LineNumberTable | ||
18 | |||
19 | # If you keep the line number information, uncomment this to | ||
20 | # hide the original source file name. | ||
21 | #-renamesourcefileattribute SourceFile |
1 | package com.pashanhoo.landsurvey; | ||
2 | |||
3 | import android.content.Context; | ||
4 | import android.support.test.InstrumentationRegistry; | ||
5 | import android.support.test.runner.AndroidJUnit4; | ||
6 | |||
7 | import org.junit.Test; | ||
8 | import org.junit.runner.RunWith; | ||
9 | |||
10 | import static org.junit.Assert.*; | ||
11 | |||
12 | /** | ||
13 | * Instrumented test, which will execute on an Android device. | ||
14 | * | ||
15 | * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
16 | */ | ||
17 | @RunWith(AndroidJUnit4.class) | ||
18 | public class ExampleInstrumentedTest { | ||
19 | @Test | ||
20 | public void useAppContext() throws Exception { | ||
21 | // Context of the app under test. | ||
22 | Context appContext = InstrumentationRegistry.getTargetContext(); | ||
23 | |||
24 | assertEquals("com.pashanhoo.landsurvey", appContext.getPackageName()); | ||
25 | } | ||
26 | } |
app/src/main/AndroidManifest.xml
0 → 100644
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | package="com.pashanhoo.landsurvey"> | ||
4 | <uses-feature | ||
5 | android:glEsVersion="0x00020000" | ||
6 | android:required="true" /> | ||
7 | <uses-permission android:name="android.permission.INTERNET" /> | ||
8 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||
9 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | ||
10 | <application | ||
11 | android:allowBackup="true" | ||
12 | android:icon="@mipmap/logo" | ||
13 | android:label="@string/app_name" | ||
14 | android:roundIcon="@mipmap/ic_launcher_round" | ||
15 | android:supportsRtl="true" | ||
16 | android:theme="@style/AppTheme"> | ||
17 | <activity | ||
18 | android:name=".MainActivity" | ||
19 | android:label="@string/app_name" | ||
20 | android:screenOrientation="landscape" | ||
21 | android:theme="@style/AppTheme.NoActionBar"> | ||
22 | <intent-filter> | ||
23 | <action android:name="android.intent.action.MAIN" /> | ||
24 | |||
25 | <category android:name="android.intent.category.LAUNCHER" /> | ||
26 | </intent-filter> | ||
27 | </activity> | ||
28 | </application> | ||
29 | |||
30 | </manifest> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | package com.pashanhoo.landsurvey; | ||
2 | |||
3 | import android.location.Location; | ||
4 | import android.location.LocationListener; | ||
5 | import android.os.Bundle; | ||
6 | import android.support.design.widget.FloatingActionButton; | ||
7 | import android.support.v7.app.AppCompatActivity; | ||
8 | import android.support.v7.widget.Toolbar; | ||
9 | import android.util.Log; | ||
10 | import android.view.View; | ||
11 | import android.view.Menu; | ||
12 | import android.view.MenuItem; | ||
13 | |||
14 | import com.esri.android.map.LocationDisplayManager; | ||
15 | import com.esri.android.map.MapView; | ||
16 | import com.esri.android.map.event.OnStatusChangedListener; | ||
17 | import com.esri.android.runtime.ArcGISRuntime; | ||
18 | import com.esri.core.geometry.Point; | ||
19 | import com.pashanhoo.landsurvey.layers.tianditu.TDTTileinfo; | ||
20 | import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuLocalTiledMapServiceLayer; | ||
21 | import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuTiledMapServiceLayer; | ||
22 | import com.pashanhoo.landsurvey.layers.tianditu.TianDiTuTiledMapServiceType; | ||
23 | import com.pashanhoo.landsurvey.utils.AppInfo; | ||
24 | |||
25 | public class MainActivity extends AppCompatActivity { | ||
26 | |||
27 | private MapView mapView; | ||
28 | private LocationDisplayManager locationDisplayManager; | ||
29 | private TianDiTuTiledMapServiceLayer t_vec; | ||
30 | private TianDiTuTiledMapServiceLayer t_cva; | ||
31 | private TianDiTuTiledMapServiceLayer t_img; | ||
32 | private TianDiTuTiledMapServiceLayer t_cia; | ||
33 | // mbtiles式天地图数据 | ||
34 | private TianDiTuLocalTiledMapServiceLayer t_local; | ||
35 | |||
36 | private String mapType; | ||
37 | |||
38 | @Override | ||
39 | protected void onCreate(Bundle savedInstanceState) { | ||
40 | super.onCreate(savedInstanceState); | ||
41 | setContentView(R.layout.activity_main); | ||
42 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); | ||
43 | setSupportActionBar(toolbar); | ||
44 | //初始化------------------------------------------------------------------- | ||
45 | AppInfo.Settings(); | ||
46 | //按钮动作------------------------------------------------------------------- | ||
47 | FloatingActionButton zoomin = (FloatingActionButton) findViewById(R.id.zoomin); | ||
48 | zoomin.setOnClickListener(new View.OnClickListener() { | ||
49 | @Override | ||
50 | public void onClick(View view) { | ||
51 | if(locationDisplayManager!=null){ | ||
52 | locationDisplayManager.stop(); | ||
53 | } | ||
54 | mapView.zoomin(true); | ||
55 | } | ||
56 | }); | ||
57 | FloatingActionButton zoomout = (FloatingActionButton) findViewById(R.id.zoomout); | ||
58 | zoomout.setOnClickListener(new View.OnClickListener() { | ||
59 | @Override | ||
60 | public void onClick(View view) { | ||
61 | if(locationDisplayManager!=null){ | ||
62 | locationDisplayManager.stop(); | ||
63 | } | ||
64 | mapView.zoomout(true); | ||
65 | } | ||
66 | }); | ||
67 | FloatingActionButton fullmap = (FloatingActionButton) findViewById(R.id.fullmap); | ||
68 | fullmap.setOnClickListener(new View.OnClickListener() { | ||
69 | @Override | ||
70 | public void onClick(View view) { | ||
71 | locationDisplayManager.stop(); | ||
72 | mapView.zoomToResolution(AppInfo.initPoint, AppInfo.initRes); | ||
73 | } | ||
74 | }); | ||
75 | FloatingActionButton gps = (FloatingActionButton) findViewById(R.id.gps); | ||
76 | gps.setOnClickListener(new View.OnClickListener() { | ||
77 | @Override | ||
78 | public void onClick(View view) { | ||
79 | if(locationDisplayManager.isStarted()){ | ||
80 | locationDisplayManager.stop(); | ||
81 | }else{ | ||
82 | locationDisplayManager.start(); | ||
83 | mapView.zoomToResolution(locationDisplayManager.getPoint(), TDTTileinfo.getRes4490()[18]); | ||
84 | } | ||
85 | } | ||
86 | }); | ||
87 | //地图初始化------------------------------------------------------------------- | ||
88 | ArcGISRuntime.setClientId("1eFHW78avlnRUPHm"); | ||
89 | mapView = (MapView)findViewById(R.id.map); | ||
90 | mapView.setEsriLogoVisible(false); | ||
91 | mapView.enableWrapAround(false); | ||
92 | |||
93 | t_vec = new TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType.VEC_C); | ||
94 | mapView.addLayer(t_vec); | ||
95 | t_cva = new TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType.CVA_C); | ||
96 | mapView.addLayer(t_cva); | ||
97 | |||
98 | // t_local = new TianDiTuLocalTiledMapServiceLayer("my.mbtiles"); | ||
99 | // mapView.addLayer(t_local); | ||
100 | |||
101 | t_img = new TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType.IMG_C); | ||
102 | t_img.setVisible(false); | ||
103 | mapView.addLayer(t_img); | ||
104 | t_cia = new TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType.CIA_C); | ||
105 | t_cia.setVisible(false); | ||
106 | mapView.addLayer(t_cia); | ||
107 | mapType = "VEC"; | ||
108 | |||
109 | mapView.setMaxResolution(TDTTileinfo.getRes4490()[0]); | ||
110 | mapView.setMinResolution(TDTTileinfo.getRes4490()[18]); | ||
111 | |||
112 | mapView.setOnStatusChangedListener(new OnStatusChangedListener() { | ||
113 | private static final long serialVersionUID = 1L; | ||
114 | @Override | ||
115 | public void onStatusChanged(Object o, STATUS status) { | ||
116 | if(status == STATUS.INITIALIZED){ | ||
117 | mapView.zoomToResolution(AppInfo.initPoint, AppInfo.initRes); | ||
118 | } | ||
119 | } | ||
120 | }); | ||
121 | |||
122 | // GPS | ||
123 | locationDisplayManager = mapView.getLocationDisplayManager(); | ||
124 | locationDisplayManager.setShowLocation(true); | ||
125 | locationDisplayManager.setAutoPanMode(LocationDisplayManager.AutoPanMode.LOCATION);//设置模式 | ||
126 | locationDisplayManager.setShowPings(true); | ||
127 | locationDisplayManager.setLocationListener(new LocationListener() { | ||
128 | @Override | ||
129 | public void onLocationChanged(Location location) { | ||
130 | mapView.zoomToResolution(new Point(location.getLongitude(), location.getLatitude()), mapView.getResolution()); | ||
131 | } | ||
132 | |||
133 | @Override | ||
134 | public void onStatusChanged(String s, int i, Bundle bundle) { | ||
135 | } | ||
136 | |||
137 | @Override | ||
138 | public void onProviderEnabled(String s) { | ||
139 | } | ||
140 | |||
141 | @Override | ||
142 | public void onProviderDisabled(String s) { | ||
143 | } | ||
144 | }); | ||
145 | |||
146 | } | ||
147 | |||
148 | @Override | ||
149 | public void onResume() { | ||
150 | super.onResume(); | ||
151 | mapView.unpause(); | ||
152 | if(locationDisplayManager!=null){ | ||
153 | locationDisplayManager.resume(); | ||
154 | } | ||
155 | } | ||
156 | |||
157 | @Override | ||
158 | public void onPause() { | ||
159 | super.onPause(); | ||
160 | mapView.pause(); | ||
161 | if(locationDisplayManager!=null){ | ||
162 | locationDisplayManager.pause(); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | @Override | ||
167 | public void onStop() { | ||
168 | super.onStop(); | ||
169 | if(locationDisplayManager!=null){ | ||
170 | locationDisplayManager.stop(); | ||
171 | } | ||
172 | |||
173 | } | ||
174 | |||
175 | @Override | ||
176 | public boolean onCreateOptionsMenu(Menu menu) { | ||
177 | // Inflate the menu; this adds items to the action bar if it is present. | ||
178 | getMenuInflater().inflate(R.menu.menu_main, menu); | ||
179 | return true; | ||
180 | } | ||
181 | |||
182 | @Override | ||
183 | public boolean onOptionsItemSelected(MenuItem item) { | ||
184 | // Handle action bar item clicks here. The action bar will | ||
185 | // automatically handle clicks on the Home/Up button, so long | ||
186 | // as you specify a parent activity in AndroidManifest.xml. | ||
187 | int id = item.getItemId(); | ||
188 | |||
189 | //noinspection SimplifiableIfStatement | ||
190 | if (id == R.id.action_settings) { | ||
191 | if(mapType == "VEC"){ | ||
192 | setLayer("IMG"); | ||
193 | mapType = "IMG"; | ||
194 | }else{ | ||
195 | setLayer("VEC"); | ||
196 | mapType = "VEC"; | ||
197 | } | ||
198 | return true; | ||
199 | } | ||
200 | |||
201 | return super.onOptionsItemSelected(item); | ||
202 | } | ||
203 | |||
204 | // 切换地图形式 | ||
205 | private void setLayer(String type){ | ||
206 | switch (type){ | ||
207 | case "VEC": | ||
208 | t_vec.setVisible(true); | ||
209 | t_cva.setVisible(true); | ||
210 | t_img.setVisible(false); | ||
211 | t_cia.setVisible(false); | ||
212 | break; | ||
213 | case "IMG": | ||
214 | t_vec.setVisible(false); | ||
215 | t_cva.setVisible(false); | ||
216 | t_img.setVisible(true); | ||
217 | t_cia.setVisible(true); | ||
218 | break; | ||
219 | default: | ||
220 | Log.i("keymapinfo", "map"); | ||
221 | } | ||
222 | } | ||
223 | } |
1 | package com.pashanhoo.landsurvey.layers.tianditu; | ||
2 | |||
3 | import com.esri.core.geometry.Point; | ||
4 | |||
5 | /** | ||
6 | * Created by jiangbotao on 2018/3/22. | ||
7 | */ | ||
8 | |||
9 | public class TDTTileinfo { | ||
10 | |||
11 | private static Point originalPoint4490 = new Point(-180, 90); | ||
12 | |||
13 | private static double[] res4490 = { | ||
14 | 1.40625, | ||
15 | 0.703125, | ||
16 | 0.3515625, | ||
17 | 0.17578125, | ||
18 | 0.087890625, | ||
19 | 0.0439453125, | ||
20 | 0.02197265625, | ||
21 | 0.010986328125, | ||
22 | 0.0054931640625, | ||
23 | 0.00274658203125, | ||
24 | 0.001373291015625, | ||
25 | 0.0006866455078125, | ||
26 | 0.00034332275390625, | ||
27 | 0.000171661376953125, | ||
28 | 8.58306884765629E-05, | ||
29 | 4.29153442382814E-05, | ||
30 | 2.14576721191407E-05, | ||
31 | 1.07288360595703E-05, | ||
32 | 5.36441802978515E-06, | ||
33 | 2.68220901489258E-06, | ||
34 | 1.34110450744629E-06 | ||
35 | }; | ||
36 | private static double[] scale4490 = { | ||
37 | 400000000, | ||
38 | 295497598.5708346, | ||
39 | 147748799.285417, | ||
40 | 73874399.6427087, | ||
41 | 36937199.8213544, | ||
42 | 18468599.9106772, | ||
43 | 9234299.95533859, | ||
44 | 4617149.97766929, | ||
45 | 2308574.98883465, | ||
46 | 1154287.49441732, | ||
47 | 577143.747208662, | ||
48 | 288571.873604331, | ||
49 | 144285.936802165, | ||
50 | 72142.9684010827, | ||
51 | 36071.4842005414, | ||
52 | 18035.7421002707, | ||
53 | 9017.87105013534, | ||
54 | 4508.93552506767, | ||
55 | 2254.467762533835, | ||
56 | 1127.2338812669175, | ||
57 | 563.616940 | ||
58 | }; | ||
59 | private static int levels = 21; | ||
60 | private static int dpi = 96; | ||
61 | private static int tileWidth = 256; | ||
62 | private static int tileHeight = 256; | ||
63 | |||
64 | |||
65 | private static Point originalPoint4326 = new Point(-20037508.3427892, 20037508.3427892); | ||
66 | private static double[] scale4326={ | ||
67 | 295829355.45, | ||
68 | 147914677.73, | ||
69 | 73957338.86, | ||
70 | 36978669.43, | ||
71 | 18489334.72, | ||
72 | 9244667.36, | ||
73 | 4622333.68, | ||
74 | 2311166.84, | ||
75 | 1155583.42, | ||
76 | 577791.71, | ||
77 | 288895.85, | ||
78 | 144447.93, | ||
79 | 72223.96, | ||
80 | 36111.98, | ||
81 | 18055.99, | ||
82 | 9028, | ||
83 | 4514, | ||
84 | 2257 }; | ||
85 | private static double[] res4326={ | ||
86 | 0.70391441567318025, | ||
87 | 0.35195720784848739, | ||
88 | 0.1759786039123464, | ||
89 | 0.087989301956173202, | ||
90 | 0.043994650989983904, | ||
91 | 0.021997325494991952, | ||
92 | 0.010998662747495976, | ||
93 | 0.005499331373747988, | ||
94 | 0.002749665686873994, | ||
95 | 0.001374832843436997, | ||
96 | 0.00068741640982119352, | ||
97 | 0.00034370821680790179, | ||
98 | 0.00017185409650664589, | ||
99 | 8.5927048253322947e-005, | ||
100 | 4.2963524126661473e-005, | ||
101 | 2.1481773960635764e-005, | ||
102 | 1.0740886980317882e-005, | ||
103 | 5.3704434901589409e-006 }; | ||
104 | |||
105 | public static Point getOriginalPoint4490() { | ||
106 | return originalPoint4490; | ||
107 | } | ||
108 | |||
109 | public static double[] getRes4490() { | ||
110 | return res4490; | ||
111 | } | ||
112 | |||
113 | public static double[] getScale4490() { | ||
114 | return scale4490; | ||
115 | } | ||
116 | |||
117 | public static Point getOriginalPoint4236() { | ||
118 | return originalPoint4326; | ||
119 | } | ||
120 | |||
121 | public static double[] getRes4326() { | ||
122 | return res4326; | ||
123 | } | ||
124 | |||
125 | public static double[] getScale4326() { | ||
126 | return scale4326; | ||
127 | } | ||
128 | |||
129 | public static int getLevels() { | ||
130 | return levels; | ||
131 | } | ||
132 | |||
133 | public static int getDpi() { | ||
134 | return dpi; | ||
135 | } | ||
136 | |||
137 | public static int getTileWidth() { | ||
138 | return tileWidth; | ||
139 | } | ||
140 | |||
141 | public static int getTileHeight() { | ||
142 | return tileHeight; | ||
143 | } | ||
144 | } |
1 | package com.pashanhoo.landsurvey.layers.tianditu; | ||
2 | |||
3 | import java.util.Random; | ||
4 | |||
5 | /** | ||
6 | * Created by jiangbotao on 2018/3/23. | ||
7 | */ | ||
8 | |||
9 | public class TDTUrl { | ||
10 | |||
11 | private TianDiTuTiledMapServiceType _tiandituMapServiceType; | ||
12 | private int _level; | ||
13 | private int _col; | ||
14 | private int _row; | ||
15 | |||
16 | public TDTUrl(int level, int col, int row, TianDiTuTiledMapServiceType tiandituMapServiceType) { | ||
17 | this._level = level; | ||
18 | this._col = col; | ||
19 | this._row = row; | ||
20 | this._tiandituMapServiceType = tiandituMapServiceType; | ||
21 | } | ||
22 | |||
23 | public String generatUrl() { | ||
24 | |||
25 | StringBuilder url = new StringBuilder("http://t"); | ||
26 | Random random = new Random(); | ||
27 | int subdomain = (random.nextInt(6) + 1); | ||
28 | url.append(subdomain); | ||
29 | switch (this._tiandituMapServiceType) { | ||
30 | case VEC_C: | ||
31 | url.append(".tianditu.com/DataServer?T=vec_c&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
32 | break; | ||
33 | case CVA_C: | ||
34 | url.append(".tianditu.com/DataServer?T=cva_c&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
35 | break; | ||
36 | case CIA_C: | ||
37 | url.append(".tianditu.com/DataServer?T=cia_c&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
38 | break; | ||
39 | case IMG_C: | ||
40 | url.append(".tianditu.com/DataServer?T=img_c&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
41 | break; | ||
42 | case VEC_W: | ||
43 | url.append(".tianditu.com/DataServer?T=vec_w&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
44 | break; | ||
45 | case CVA_W: | ||
46 | url.append(".tianditu.com/DataServer?T=cva_w&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
47 | break; | ||
48 | case CIA_W: | ||
49 | url.append(".tianditu.com/DataServer?T=cia_w&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
50 | break; | ||
51 | case IMG_W: | ||
52 | url.append(".tianditu.com/DataServer?T=img_w&X=").append(this._col).append("&Y=").append(this._row).append("&L=").append(this._level); | ||
53 | break; | ||
54 | default: | ||
55 | return null; | ||
56 | } | ||
57 | return url.toString(); | ||
58 | } | ||
59 | } |
app/src/main/java/com/pashanhoo/landsurvey/layers/tianditu/TianDiTuLocalTiledMapServiceLayer.java
0 → 100644
1 | package com.pashanhoo.landsurvey.layers.tianditu; | ||
2 | |||
3 | import android.database.Cursor; | ||
4 | import android.database.sqlite.SQLiteDatabase; | ||
5 | import android.os.Environment; | ||
6 | import android.util.Log; | ||
7 | |||
8 | import com.esri.android.map.TiledServiceLayer; | ||
9 | import com.esri.core.geometry.Envelope; | ||
10 | import com.esri.core.geometry.Point; | ||
11 | import com.esri.core.geometry.SpatialReference; | ||
12 | import com.pashanhoo.landsurvey.utils.AppInfo; | ||
13 | |||
14 | import java.util.concurrent.RejectedExecutionException; | ||
15 | |||
16 | /** | ||
17 | * Created by jiangbotao on 2018/3/25. | ||
18 | */ | ||
19 | |||
20 | public class TianDiTuLocalTiledMapServiceLayer extends TiledServiceLayer { | ||
21 | |||
22 | String sqlitedb = ""; | ||
23 | private TileInfo tiandituTileInfo; | ||
24 | |||
25 | public TianDiTuLocalTiledMapServiceLayer(String url) { | ||
26 | super(url); | ||
27 | this.sqlitedb = url; | ||
28 | try { | ||
29 | getServiceExecutor().submit(new Runnable() { | ||
30 | |||
31 | public final void run() { | ||
32 | a.initLayer(); | ||
33 | } | ||
34 | |||
35 | final TianDiTuLocalTiledMapServiceLayer a; | ||
36 | |||
37 | |||
38 | { | ||
39 | a = TianDiTuLocalTiledMapServiceLayer.this; | ||
40 | //super(); | ||
41 | } | ||
42 | }); | ||
43 | return; | ||
44 | } catch (RejectedExecutionException _ex) { | ||
45 | } | ||
46 | } | ||
47 | |||
48 | |||
49 | protected void initLayer() { | ||
50 | this.buildTileInfo(); | ||
51 | this.setFullExtent(new Envelope(-180, -90, 180, 90)); | ||
52 | this.setDefaultSpatialReference(SpatialReference.create(4490)); //CGCS2000 | ||
53 | //this.setDefaultSpatialReference(SpatialReference.create(4326)); | ||
54 | this.setInitialExtent(new Envelope(90.52, 33.76, 113.59, 42.88)); | ||
55 | super.initLayer(); | ||
56 | } | ||
57 | |||
58 | |||
59 | @Override | ||
60 | protected byte[] getTile(int level, int col, int row) throws Exception { | ||
61 | byte[] result = null; | ||
62 | try{ | ||
63 | result = getOfflineCacheDB(level, col, row); | ||
64 | }catch (Exception ex) { | ||
65 | ex.printStackTrace(); | ||
66 | } | ||
67 | |||
68 | return result; | ||
69 | } | ||
70 | |||
71 | private byte[] getOfflineCacheDB(int level, int col, int row) throws Exception { | ||
72 | |||
73 | byte[] result = null; | ||
74 | Log.i("local", level + ":"+ col + ":" + row); | ||
75 | Log.i("local", String.valueOf(Math.pow(2, level))); | ||
76 | row = (int) (Math.pow(2, level) - col - row); | ||
77 | Log.i("local", level + ":"+ col + ":" + row); | ||
78 | Log.i("local","---------------------"); | ||
79 | String sql = "select * from tiles where zoom_level = " + level + " and tile_column = " + col + " and tile_row = " + row; | ||
80 | |||
81 | Cursor mCursor = | ||
82 | SQLiteDatabase.openOrCreateDatabase(Environment.getExternalStorageDirectory()+"/keymapinfo/" + this.sqlitedb, null) | ||
83 | .rawQuery(sql, null); | ||
84 | boolean hasData = false; | ||
85 | |||
86 | while (mCursor.moveToNext()) {//判断是否存在数据 | ||
87 | hasData = true; | ||
88 | } | ||
89 | if (hasData) {//数据库中有数据 | ||
90 | try { | ||
91 | if (mCursor.moveToFirst()) { | ||
92 | result = mCursor.getBlob(mCursor.getColumnIndex("tile_data")); | ||
93 | } | ||
94 | mCursor.close(); | ||
95 | } catch (Exception e) { | ||
96 | e.printStackTrace(); | ||
97 | result = null; | ||
98 | } | ||
99 | } | ||
100 | return result; | ||
101 | } | ||
102 | |||
103 | private void buildTileInfo() { | ||
104 | Point originalPoint = new Point(-180, 90); | ||
105 | |||
106 | double[] res = { | ||
107 | 1.40625, | ||
108 | 0.703125, | ||
109 | 0.3515625, | ||
110 | 0.17578125, | ||
111 | 0.087890625, | ||
112 | 0.0439453125, | ||
113 | 0.02197265625, | ||
114 | 0.010986328125, | ||
115 | 0.0054931640625, | ||
116 | 0.00274658203125, | ||
117 | 0.001373291015625, | ||
118 | 0.0006866455078125, | ||
119 | 0.00034332275390625, | ||
120 | 0.000171661376953125, | ||
121 | 8.58306884765629E-05, | ||
122 | 4.29153442382814E-05, | ||
123 | 2.14576721191407E-05, | ||
124 | 1.07288360595703E-05, | ||
125 | 5.36441802978515E-06, | ||
126 | 2.68220901489258E-06, | ||
127 | 1.34110450744629E-06 | ||
128 | }; | ||
129 | double[] scale = { | ||
130 | 400000000, | ||
131 | 295497598.5708346, | ||
132 | 147748799.285417, | ||
133 | 73874399.6427087, | ||
134 | 36937199.8213544, | ||
135 | 18468599.9106772, | ||
136 | 9234299.95533859, | ||
137 | 4617149.97766929, | ||
138 | 2308574.98883465, | ||
139 | 1154287.49441732, | ||
140 | 577143.747208662, | ||
141 | 288571.873604331, | ||
142 | 144285.936802165, | ||
143 | 72142.9684010827, | ||
144 | 36071.4842005414, | ||
145 | 18035.7421002707, | ||
146 | 9017.87105013534, | ||
147 | 4508.93552506767, | ||
148 | 2254.467762533835, | ||
149 | 1127.2338812669175, | ||
150 | 563.616940 | ||
151 | }; | ||
152 | int levels = 21; | ||
153 | int dpi = 96; | ||
154 | int tileWidth = 256; | ||
155 | int tileHeight = 256; | ||
156 | this.tiandituTileInfo = new com.esri.android.map.TiledServiceLayer.TileInfo(originalPoint, scale, res, levels, dpi, tileWidth, tileHeight); | ||
157 | this.setTileInfo(this.tiandituTileInfo); | ||
158 | } | ||
159 | } |
app/src/main/java/com/pashanhoo/landsurvey/layers/tianditu/TianDiTuTiledMapServiceLayer.java
0 → 100644
1 | package com.pashanhoo.landsurvey.layers.tianditu; | ||
2 | |||
3 | import android.content.ContentValues; | ||
4 | import android.database.Cursor; | ||
5 | import android.util.Log; | ||
6 | |||
7 | import com.esri.android.map.TiledServiceLayer; | ||
8 | import com.esri.core.geometry.Envelope; | ||
9 | import com.esri.core.geometry.Point; | ||
10 | import com.esri.core.geometry.SpatialReference; | ||
11 | import com.esri.core.io.UserCredentials; | ||
12 | import com.pashanhoo.landsurvey.utils.AppInfo; | ||
13 | import com.pashanhoo.landsurvey.utils.GADBHelper; | ||
14 | |||
15 | import java.io.BufferedInputStream; | ||
16 | import java.io.ByteArrayOutputStream; | ||
17 | import java.net.HttpURLConnection; | ||
18 | import java.net.URL; | ||
19 | import java.util.concurrent.RejectedExecutionException; | ||
20 | |||
21 | /** | ||
22 | * Created by jiangbotao on 2018/3/23. | ||
23 | */ | ||
24 | |||
25 | public class TianDiTuTiledMapServiceLayer extends TiledServiceLayer { | ||
26 | |||
27 | private TianDiTuTiledMapServiceType _mapType; | ||
28 | private TileInfo tiandituTileInfo; | ||
29 | |||
30 | public TianDiTuTiledMapServiceLayer() { | ||
31 | this(null, null, true); | ||
32 | } | ||
33 | |||
34 | public TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType mapType) { | ||
35 | this(mapType, null, true); | ||
36 | GADBHelper.createTable(AppInfo.mapcachedb, _mapType.getName()); | ||
37 | } | ||
38 | |||
39 | public TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType mapType, UserCredentials usercredentials) { | ||
40 | this(mapType, usercredentials, true); | ||
41 | } | ||
42 | |||
43 | public TianDiTuTiledMapServiceLayer(TianDiTuTiledMapServiceType mapType, UserCredentials usercredentials, boolean flag) { | ||
44 | super(""); | ||
45 | this._mapType = mapType; | ||
46 | setCredentials(usercredentials); | ||
47 | |||
48 | if (flag) | ||
49 | try { | ||
50 | getServiceExecutor().submit(new Runnable() { | ||
51 | |||
52 | public final void run() { | ||
53 | a.initLayer(); | ||
54 | } | ||
55 | |||
56 | final TianDiTuTiledMapServiceLayer a; | ||
57 | { | ||
58 | a = TianDiTuTiledMapServiceLayer.this; | ||
59 | //super(); | ||
60 | } | ||
61 | }); | ||
62 | return; | ||
63 | } catch (RejectedExecutionException _ex) { | ||
64 | } | ||
65 | } | ||
66 | |||
67 | |||
68 | public TianDiTuTiledMapServiceType getMapType() { | ||
69 | return this._mapType; | ||
70 | } | ||
71 | |||
72 | protected void initLayer() { | ||
73 | this.buildTileInfo(); | ||
74 | this.setFullExtent(new Envelope(-180, -90, 180, 90)); | ||
75 | this.setDefaultSpatialReference(SpatialReference.create(4490)); //CGCS2000 | ||
76 | //this.setDefaultSpatialReference(SpatialReference.create(4326)); | ||
77 | this.setInitialExtent(new Envelope(90.52, 33.76, 113.59, 42.88)); | ||
78 | super.initLayer(); | ||
79 | } | ||
80 | |||
81 | public void refresh() { | ||
82 | try { | ||
83 | getServiceExecutor().submit(new Runnable() { | ||
84 | |||
85 | public final void run() { | ||
86 | if (a.isInitialized()) | ||
87 | try { | ||
88 | a.b(); | ||
89 | a.clearTiles(); | ||
90 | return; | ||
91 | } catch (Exception exception) { | ||
92 | Log.e("ArcGIS", "Re-initialization of the layer failed.", exception); | ||
93 | } | ||
94 | } | ||
95 | |||
96 | final TianDiTuTiledMapServiceLayer a; | ||
97 | |||
98 | { | ||
99 | a = TianDiTuTiledMapServiceLayer.this; | ||
100 | //super(); | ||
101 | } | ||
102 | }); | ||
103 | return; | ||
104 | } catch (RejectedExecutionException _ex) { | ||
105 | return; | ||
106 | } | ||
107 | } | ||
108 | |||
109 | final void b() | ||
110 | throws Exception { | ||
111 | |||
112 | } | ||
113 | |||
114 | @Override | ||
115 | protected byte[] getTile(int level, int col, int row) throws Exception { | ||
116 | byte[] result = null; | ||
117 | try { | ||
118 | // 首先从离线数据库中读取 | ||
119 | result = getOfflineCacheDB(level, col, row); | ||
120 | // 如果没有就直接从web上读取 | ||
121 | if (result == null) { | ||
122 | ByteArrayOutputStream bos = new ByteArrayOutputStream(); | ||
123 | |||
124 | URL sjwurl = new URL(this.getTianDiMapUrl(level, col, row)); | ||
125 | HttpURLConnection httpUrl = null; | ||
126 | BufferedInputStream bis = null; | ||
127 | byte[] buf = new byte[1024]; | ||
128 | |||
129 | httpUrl = (HttpURLConnection) sjwurl.openConnection(); | ||
130 | httpUrl.connect(); | ||
131 | bis = new BufferedInputStream(httpUrl.getInputStream()); | ||
132 | |||
133 | while (true) { | ||
134 | int bytes_read = bis.read(buf); | ||
135 | if (bytes_read > 0) { | ||
136 | bos.write(buf, 0, bytes_read); | ||
137 | } else { | ||
138 | break; | ||
139 | } | ||
140 | } | ||
141 | ; | ||
142 | bis.close(); | ||
143 | httpUrl.disconnect(); | ||
144 | |||
145 | result = bos.toByteArray(); | ||
146 | // 将读取的数据存入mbtiles中 | ||
147 | AddOfflineCacheDB(level, col, row, result); | ||
148 | } | ||
149 | } catch (Exception ex) { | ||
150 | ex.printStackTrace(); | ||
151 | } | ||
152 | |||
153 | return result; | ||
154 | } | ||
155 | |||
156 | private void AddOfflineCacheDB(int level, int col, int row, byte[] bytes){ | ||
157 | ContentValues values = new ContentValues(); | ||
158 | values.put("TILELEVEL", level); | ||
159 | values.put("TILECOL", col); | ||
160 | values.put("TILEROW", row); | ||
161 | values.put("TILEDATA", bytes); | ||
162 | |||
163 | AppInfo.mapcachedb.insert(_mapType.getName(), null, values); | ||
164 | } | ||
165 | |||
166 | |||
167 | private byte[] getOfflineCacheDB(int level, int col, int row) throws Exception { | ||
168 | |||
169 | byte[] result = null; | ||
170 | String sql = "select * from " + _mapType.getName() + " where TILELEVEL = " + level + " and TILECOL = " + col + " and TILEROW = " + row; | ||
171 | Cursor mCursor = AppInfo.mapcachedb.rawQuery(sql, null); | ||
172 | boolean hasData = false; | ||
173 | |||
174 | while (mCursor.moveToNext()) {//判断是否存在数据 | ||
175 | hasData = true; | ||
176 | } | ||
177 | if (hasData) {//数据库中有数据 | ||
178 | try { | ||
179 | if (mCursor.moveToFirst()) { | ||
180 | result = mCursor.getBlob(mCursor.getColumnIndex("TILEDATA")); | ||
181 | } | ||
182 | mCursor.close(); | ||
183 | } catch (Exception e) { | ||
184 | e.printStackTrace(); | ||
185 | result = null; | ||
186 | } | ||
187 | } | ||
188 | return result; | ||
189 | } | ||
190 | |||
191 | @Override | ||
192 | public TileInfo getTileInfo() { | ||
193 | return this.tiandituTileInfo; | ||
194 | } | ||
195 | |||
196 | /** | ||
197 | * | ||
198 | * */ | ||
199 | private String getTianDiMapUrl(int level, int col, int row) { | ||
200 | String url = new TDTUrl(level, col, row, this._mapType).generatUrl(); | ||
201 | return url; | ||
202 | } | ||
203 | |||
204 | private void buildTileInfo() { | ||
205 | Point originalPoint = new Point(-180, 90); | ||
206 | |||
207 | double[] res = { | ||
208 | 1.40625, | ||
209 | 0.703125, | ||
210 | 0.3515625, | ||
211 | 0.17578125, | ||
212 | 0.087890625, | ||
213 | 0.0439453125, | ||
214 | 0.02197265625, | ||
215 | 0.010986328125, | ||
216 | 0.0054931640625, | ||
217 | 0.00274658203125, | ||
218 | 0.001373291015625, | ||
219 | 0.0006866455078125, | ||
220 | 0.00034332275390625, | ||
221 | 0.000171661376953125, | ||
222 | 8.58306884765629E-05, | ||
223 | 4.29153442382814E-05, | ||
224 | 2.14576721191407E-05, | ||
225 | 1.07288360595703E-05, | ||
226 | 5.36441802978515E-06, | ||
227 | 2.68220901489258E-06, | ||
228 | 1.34110450744629E-06 | ||
229 | }; | ||
230 | double[] scale = { | ||
231 | 400000000, | ||
232 | 295497598.5708346, | ||
233 | 147748799.285417, | ||
234 | 73874399.6427087, | ||
235 | 36937199.8213544, | ||
236 | 18468599.9106772, | ||
237 | 9234299.95533859, | ||
238 | 4617149.97766929, | ||
239 | 2308574.98883465, | ||
240 | 1154287.49441732, | ||
241 | 577143.747208662, | ||
242 | 288571.873604331, | ||
243 | 144285.936802165, | ||
244 | 72142.9684010827, | ||
245 | 36071.4842005414, | ||
246 | 18035.7421002707, | ||
247 | 9017.87105013534, | ||
248 | 4508.93552506767, | ||
249 | 2254.467762533835, | ||
250 | 1127.2338812669175, | ||
251 | 563.616940 | ||
252 | }; | ||
253 | int levels = 21; | ||
254 | int dpi = 96; | ||
255 | int tileWidth = 256; | ||
256 | int tileHeight = 256; | ||
257 | this.tiandituTileInfo = new com.esri.android.map.TiledServiceLayer.TileInfo(originalPoint, scale, res, levels, dpi, tileWidth, tileHeight); | ||
258 | this.setTileInfo(this.tiandituTileInfo); | ||
259 | } | ||
260 | } |
app/src/main/java/com/pashanhoo/landsurvey/layers/tianditu/TianDiTuTiledMapServiceType.java
0 → 100644
1 | package com.pashanhoo.landsurvey.layers.tianditu; | ||
2 | |||
3 | import com.pashanhoo.landsurvey.layers.BaseTiledMapServiceType; | ||
4 | |||
5 | /** | ||
6 | * Created by jiangbotao on 2018/3/23. | ||
7 | */ | ||
8 | |||
9 | public enum TianDiTuTiledMapServiceType implements BaseTiledMapServiceType { | ||
10 | |||
11 | /** | ||
12 | * 矢量数据,CGCS2000 | ||
13 | * */ | ||
14 | VEC_C, | ||
15 | /** | ||
16 | * 影像数据 | ||
17 | * */ | ||
18 | IMG_C, | ||
19 | /** | ||
20 | * 矢量注记 | ||
21 | * */ | ||
22 | CVA_C, | ||
23 | /** | ||
24 | * 影像注记 | ||
25 | * */ | ||
26 | CIA_C, | ||
27 | /** | ||
28 | * 矢量数据,web墨卡托4326 | ||
29 | */ | ||
30 | VEC_W, | ||
31 | /** | ||
32 | * 影像数据 | ||
33 | * */ | ||
34 | IMG_W, | ||
35 | /** | ||
36 | * 矢量注记 | ||
37 | * */ | ||
38 | CVA_W, | ||
39 | /** | ||
40 | * 影像注记 | ||
41 | * */ | ||
42 | CIA_W; | ||
43 | |||
44 | public void setName() | ||
45 | { | ||
46 | |||
47 | } | ||
48 | |||
49 | @Override | ||
50 | public String getName() | ||
51 | { | ||
52 | return this.name().toString(); | ||
53 | } | ||
54 | } |
1 | package com.pashanhoo.landsurvey.utils; | ||
2 | |||
3 | import android.database.sqlite.SQLiteDatabase; | ||
4 | import android.os.Environment; | ||
5 | import android.util.Log; | ||
6 | |||
7 | import com.esri.core.geometry.Point; | ||
8 | import com.pashanhoo.landsurvey.layers.tianditu.TDTTileinfo; | ||
9 | |||
10 | import java.io.File; | ||
11 | |||
12 | /** | ||
13 | * Created by jiangbotao on 2018/3/23. | ||
14 | */ | ||
15 | |||
16 | public class AppInfo { | ||
17 | |||
18 | public static String dbcachepath; | ||
19 | |||
20 | public static SQLiteDatabase mapcachedb; | ||
21 | |||
22 | public static Point initPoint = new Point(121.56, 29.862149); | ||
23 | |||
24 | public static double initRes = TDTTileinfo.getRes4490()[12]; | ||
25 | |||
26 | public static void Settings(){ | ||
27 | // 新建地图缓存数据库,不要试图新建多级目录,切记切记,如keymapinfo/cache | ||
28 | dbcachepath = Environment.getExternalStorageDirectory()+"/keymapinfo"; | ||
29 | // 创建目录 | ||
30 | final File mFolder = new File(dbcachepath); | ||
31 | if(!mFolder.exists()) { | ||
32 | mFolder.mkdirs(); | ||
33 | } | ||
34 | Log.i("keymapinfo", AppInfo.dbcachepath); | ||
35 | mapcachedb = SQLiteDatabase.openOrCreateDatabase(dbcachepath + "/mapcache.db", null); | ||
36 | } | ||
37 | } |
1 | package com.pashanhoo.landsurvey.utils; | ||
2 | |||
3 | import android.content.Context; | ||
4 | import android.database.sqlite.SQLiteDatabase; | ||
5 | import android.database.sqlite.SQLiteOpenHelper; | ||
6 | |||
7 | /** | ||
8 | * Created by jiangbotao on 2018/3/23. | ||
9 | */ | ||
10 | |||
11 | public class GADBHelper extends SQLiteOpenHelper { | ||
12 | |||
13 | private static final int VERSION = 1; | ||
14 | public static String TABLE_NAME = "ga_local"; | ||
15 | |||
16 | public GADBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { | ||
17 | super(context, name, factory, version); | ||
18 | } | ||
19 | |||
20 | public GADBHelper(Context context, String name) { | ||
21 | this(context, name, null, VERSION); | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public void onCreate(SQLiteDatabase db) { | ||
26 | db.beginTransaction(); | ||
27 | db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + | ||
28 | "(TILELEVEL INT," + | ||
29 | "TILECOL INT," + | ||
30 | "TILEROW INT," + | ||
31 | "TILEDATA BLOB)"); | ||
32 | |||
33 | db.setTransactionSuccessful(); | ||
34 | db.endTransaction(); | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { | ||
39 | db.execSQL("drop table if exists" + TABLE_NAME); | ||
40 | onCreate(db); | ||
41 | } | ||
42 | |||
43 | public void delete() { | ||
44 | SQLiteDatabase db = this.getWritableDatabase(); | ||
45 | db.beginTransaction(); | ||
46 | db.delete(GADBHelper.TABLE_NAME, "1=1", null); | ||
47 | db.setTransactionSuccessful(); | ||
48 | db.endTransaction(); | ||
49 | } | ||
50 | |||
51 | |||
52 | public static void createTable(SQLiteDatabase db, String TABLE_NAME){ | ||
53 | db.beginTransaction(); | ||
54 | db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + | ||
55 | "(TILELEVEL INT," + | ||
56 | "TILECOL INT," + | ||
57 | "TILEROW INT," + | ||
58 | "TILEDATA BLOB," + | ||
59 | "TILETIME TEXT)"); | ||
60 | |||
61 | db.setTransactionSuccessful(); | ||
62 | db.endTransaction(); | ||
63 | } | ||
64 | } |
1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
2 | xmlns:aapt="http://schemas.android.com/aapt" | ||
3 | android:width="108dp" | ||
4 | android:height="108dp" | ||
5 | android:viewportHeight="108" | ||
6 | android:viewportWidth="108"> | ||
7 | <path | ||
8 | android:fillType="evenOdd" | ||
9 | android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" | ||
10 | android:strokeColor="#00000000" | ||
11 | android:strokeWidth="1"> | ||
12 | <aapt:attr name="android:fillColor"> | ||
13 | <gradient | ||
14 | android:endX="78.5885" | ||
15 | android:endY="90.9159" | ||
16 | android:startX="48.7653" | ||
17 | android:startY="61.0927" | ||
18 | android:type="linear"> | ||
19 | <item | ||
20 | android:color="#44000000" | ||
21 | android:offset="0.0" /> | ||
22 | <item | ||
23 | android:color="#00000000" | ||
24 | android:offset="1.0" /> | ||
25 | </gradient> | ||
26 | </aapt:attr> | ||
27 | </path> | ||
28 | <path | ||
29 | android:fillColor="#FFFFFF" | ||
30 | android:fillType="nonZero" | ||
31 | android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" | ||
32 | android:strokeColor="#00000000" | ||
33 | android:strokeWidth="1" /> | ||
34 | </vector> |
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | android:width="108dp" | ||
4 | android:height="108dp" | ||
5 | android:viewportHeight="108" | ||
6 | android:viewportWidth="108"> | ||
7 | <path | ||
8 | android:fillColor="#26A69A" | ||
9 | android:pathData="M0,0h108v108h-108z" /> | ||
10 | <path | ||
11 | android:fillColor="#00000000" | ||
12 | android:pathData="M9,0L9,108" | ||
13 | android:strokeColor="#33FFFFFF" | ||
14 | android:strokeWidth="0.8" /> | ||
15 | <path | ||
16 | android:fillColor="#00000000" | ||
17 | android:pathData="M19,0L19,108" | ||
18 | android:strokeColor="#33FFFFFF" | ||
19 | android:strokeWidth="0.8" /> | ||
20 | <path | ||
21 | android:fillColor="#00000000" | ||
22 | android:pathData="M29,0L29,108" | ||
23 | android:strokeColor="#33FFFFFF" | ||
24 | android:strokeWidth="0.8" /> | ||
25 | <path | ||
26 | android:fillColor="#00000000" | ||
27 | android:pathData="M39,0L39,108" | ||
28 | android:strokeColor="#33FFFFFF" | ||
29 | android:strokeWidth="0.8" /> | ||
30 | <path | ||
31 | android:fillColor="#00000000" | ||
32 | android:pathData="M49,0L49,108" | ||
33 | android:strokeColor="#33FFFFFF" | ||
34 | android:strokeWidth="0.8" /> | ||
35 | <path | ||
36 | android:fillColor="#00000000" | ||
37 | android:pathData="M59,0L59,108" | ||
38 | android:strokeColor="#33FFFFFF" | ||
39 | android:strokeWidth="0.8" /> | ||
40 | <path | ||
41 | android:fillColor="#00000000" | ||
42 | android:pathData="M69,0L69,108" | ||
43 | android:strokeColor="#33FFFFFF" | ||
44 | android:strokeWidth="0.8" /> | ||
45 | <path | ||
46 | android:fillColor="#00000000" | ||
47 | android:pathData="M79,0L79,108" | ||
48 | android:strokeColor="#33FFFFFF" | ||
49 | android:strokeWidth="0.8" /> | ||
50 | <path | ||
51 | android:fillColor="#00000000" | ||
52 | android:pathData="M89,0L89,108" | ||
53 | android:strokeColor="#33FFFFFF" | ||
54 | android:strokeWidth="0.8" /> | ||
55 | <path | ||
56 | android:fillColor="#00000000" | ||
57 | android:pathData="M99,0L99,108" | ||
58 | android:strokeColor="#33FFFFFF" | ||
59 | android:strokeWidth="0.8" /> | ||
60 | <path | ||
61 | android:fillColor="#00000000" | ||
62 | android:pathData="M0,9L108,9" | ||
63 | android:strokeColor="#33FFFFFF" | ||
64 | android:strokeWidth="0.8" /> | ||
65 | <path | ||
66 | android:fillColor="#00000000" | ||
67 | android:pathData="M0,19L108,19" | ||
68 | android:strokeColor="#33FFFFFF" | ||
69 | android:strokeWidth="0.8" /> | ||
70 | <path | ||
71 | android:fillColor="#00000000" | ||
72 | android:pathData="M0,29L108,29" | ||
73 | android:strokeColor="#33FFFFFF" | ||
74 | android:strokeWidth="0.8" /> | ||
75 | <path | ||
76 | android:fillColor="#00000000" | ||
77 | android:pathData="M0,39L108,39" | ||
78 | android:strokeColor="#33FFFFFF" | ||
79 | android:strokeWidth="0.8" /> | ||
80 | <path | ||
81 | android:fillColor="#00000000" | ||
82 | android:pathData="M0,49L108,49" | ||
83 | android:strokeColor="#33FFFFFF" | ||
84 | android:strokeWidth="0.8" /> | ||
85 | <path | ||
86 | android:fillColor="#00000000" | ||
87 | android:pathData="M0,59L108,59" | ||
88 | android:strokeColor="#33FFFFFF" | ||
89 | android:strokeWidth="0.8" /> | ||
90 | <path | ||
91 | android:fillColor="#00000000" | ||
92 | android:pathData="M0,69L108,69" | ||
93 | android:strokeColor="#33FFFFFF" | ||
94 | android:strokeWidth="0.8" /> | ||
95 | <path | ||
96 | android:fillColor="#00000000" | ||
97 | android:pathData="M0,79L108,79" | ||
98 | android:strokeColor="#33FFFFFF" | ||
99 | android:strokeWidth="0.8" /> | ||
100 | <path | ||
101 | android:fillColor="#00000000" | ||
102 | android:pathData="M0,89L108,89" | ||
103 | android:strokeColor="#33FFFFFF" | ||
104 | android:strokeWidth="0.8" /> | ||
105 | <path | ||
106 | android:fillColor="#00000000" | ||
107 | android:pathData="M0,99L108,99" | ||
108 | android:strokeColor="#33FFFFFF" | ||
109 | android:strokeWidth="0.8" /> | ||
110 | <path | ||
111 | android:fillColor="#00000000" | ||
112 | android:pathData="M19,29L89,29" | ||
113 | android:strokeColor="#33FFFFFF" | ||
114 | android:strokeWidth="0.8" /> | ||
115 | <path | ||
116 | android:fillColor="#00000000" | ||
117 | android:pathData="M19,39L89,39" | ||
118 | android:strokeColor="#33FFFFFF" | ||
119 | android:strokeWidth="0.8" /> | ||
120 | <path | ||
121 | android:fillColor="#00000000" | ||
122 | android:pathData="M19,49L89,49" | ||
123 | android:strokeColor="#33FFFFFF" | ||
124 | android:strokeWidth="0.8" /> | ||
125 | <path | ||
126 | android:fillColor="#00000000" | ||
127 | android:pathData="M19,59L89,59" | ||
128 | android:strokeColor="#33FFFFFF" | ||
129 | android:strokeWidth="0.8" /> | ||
130 | <path | ||
131 | android:fillColor="#00000000" | ||
132 | android:pathData="M19,69L89,69" | ||
133 | android:strokeColor="#33FFFFFF" | ||
134 | android:strokeWidth="0.8" /> | ||
135 | <path | ||
136 | android:fillColor="#00000000" | ||
137 | android:pathData="M19,79L89,79" | ||
138 | android:strokeColor="#33FFFFFF" | ||
139 | android:strokeWidth="0.8" /> | ||
140 | <path | ||
141 | android:fillColor="#00000000" | ||
142 | android:pathData="M29,19L29,89" | ||
143 | android:strokeColor="#33FFFFFF" | ||
144 | android:strokeWidth="0.8" /> | ||
145 | <path | ||
146 | android:fillColor="#00000000" | ||
147 | android:pathData="M39,19L39,89" | ||
148 | android:strokeColor="#33FFFFFF" | ||
149 | android:strokeWidth="0.8" /> | ||
150 | <path | ||
151 | android:fillColor="#00000000" | ||
152 | android:pathData="M49,19L49,89" | ||
153 | android:strokeColor="#33FFFFFF" | ||
154 | android:strokeWidth="0.8" /> | ||
155 | <path | ||
156 | android:fillColor="#00000000" | ||
157 | android:pathData="M59,19L59,89" | ||
158 | android:strokeColor="#33FFFFFF" | ||
159 | android:strokeWidth="0.8" /> | ||
160 | <path | ||
161 | android:fillColor="#00000000" | ||
162 | android:pathData="M69,19L69,89" | ||
163 | android:strokeColor="#33FFFFFF" | ||
164 | android:strokeWidth="0.8" /> | ||
165 | <path | ||
166 | android:fillColor="#00000000" | ||
167 | android:pathData="M79,19L79,89" | ||
168 | android:strokeColor="#33FFFFFF" | ||
169 | android:strokeWidth="0.8" /> | ||
170 | </vector> |
app/src/main/res/layout/activity_main.xml
0 → 100644
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | tools:context="com.pashanhoo.landsurvey.MainActivity"> | ||
8 | |||
9 | <android.support.design.widget.AppBarLayout | ||
10 | android:layout_width="match_parent" | ||
11 | android:layout_height="wrap_content" | ||
12 | android:theme="@style/AppTheme.AppBarOverlay"> | ||
13 | |||
14 | <android.support.v7.widget.Toolbar | ||
15 | android:id="@+id/toolbar" | ||
16 | android:layout_width="match_parent" | ||
17 | android:layout_height="?attr/actionBarSize" | ||
18 | android:background="?attr/colorPrimary" | ||
19 | app:navigationIcon="@android:drawable/ic_dialog_map" | ||
20 | app:popupTheme="@style/AppTheme.PopupOverlay" /> | ||
21 | |||
22 | </android.support.design.widget.AppBarLayout> | ||
23 | |||
24 | <include layout="@layout/content_main" /> | ||
25 | <android.support.v7.widget.LinearLayoutCompat | ||
26 | android:layout_width="wrap_content" | ||
27 | android:layout_height="match_parent" | ||
28 | android:orientation="vertical" | ||
29 | android:layout_marginTop="76dp" | ||
30 | android:layout_marginRight="16dp" | ||
31 | android:layout_marginBottom="16dp" | ||
32 | android:layout_gravity="top|end"> | ||
33 | <android.support.design.widget.FloatingActionButton | ||
34 | android:id="@+id/zoomin" | ||
35 | android:layout_width="wrap_content" | ||
36 | android:layout_height="wrap_content" | ||
37 | android:layout_gravity="top|end" | ||
38 | android:layout_marginTop="0dp" | ||
39 | android:layout_marginRight="0dp" | ||
40 | app:srcCompat="@mipmap/ic_zoom_in_white_48dp" /> | ||
41 | <android.support.design.widget.FloatingActionButton | ||
42 | android:id="@+id/zoomout" | ||
43 | android:layout_width="wrap_content" | ||
44 | android:layout_height="wrap_content" | ||
45 | android:layout_gravity="top|end" | ||
46 | android:layout_marginTop="16dp" | ||
47 | android:layout_marginRight="0dp" | ||
48 | app:srcCompat="@mipmap/ic_zoom_out_white_48dp" /> | ||
49 | <android.support.design.widget.FloatingActionButton | ||
50 | android:id="@+id/gps" | ||
51 | android:layout_width="wrap_content" | ||
52 | android:layout_height="wrap_content" | ||
53 | android:layout_gravity="top|end" | ||
54 | android:layout_marginTop="16dp" | ||
55 | android:layout_marginRight="0dp" | ||
56 | app:srcCompat="@mipmap/ic_my_location_white_48dp" /> | ||
57 | <android.support.design.widget.FloatingActionButton | ||
58 | android:id="@+id/fullmap" | ||
59 | android:layout_width="wrap_content" | ||
60 | android:layout_height="wrap_content" | ||
61 | android:layout_gravity="top|end" | ||
62 | android:layout_marginTop="16dp" | ||
63 | android:layout_marginRight="0dp" | ||
64 | app:srcCompat="@mipmap/ic_home_white_48dp" /> | ||
65 | </android.support.v7.widget.LinearLayoutCompat> | ||
66 | |||
67 | |||
68 | </android.support.design.widget.CoordinatorLayout> |
app/src/main/res/layout/content_main.xml
0 → 100644
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | app:layout_behavior="@string/appbar_scrolling_view_behavior" | ||
8 | tools:context="com.pashanhoo.landsurvey.MainActivity" | ||
9 | tools:showIn="@layout/activity_main"> | ||
10 | |||
11 | <com.esri.android.map.MapView | ||
12 | android:id="@+id/map" | ||
13 | android:layout_width="fill_parent" | ||
14 | android:layout_height="fill_parent"></com.esri.android.map.MapView> | ||
15 | |||
16 | </android.support.constraint.ConstraintLayout> |
app/src/main/res/menu/menu_main.xml
0 → 100644
1 | <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||
2 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
3 | xmlns:tools="http://schemas.android.com/tools" | ||
4 | tools:context="com.pashanhoo.landsurvey.MainActivity"> | ||
5 | <item | ||
6 | android:id="@+id/action_settings" | ||
7 | android:orderInCategory="100" | ||
8 | android:icon="@mipmap/ic_layers_white_48dp" | ||
9 | android:title="@string/action_settings" | ||
10 | app:showAsAction="always" > | ||
11 | <menu> | ||
12 | |||
13 | </menu> | ||
14 | </item> | ||
15 | </menu> |
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | <background android:drawable="@drawable/ic_launcher_background" /> | ||
4 | <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
5 | </adaptive-icon> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | <background android:drawable="@drawable/ic_launcher_background" /> | ||
4 | <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
5 | </adaptive-icon> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
app/src/main/res/mipmap-hdpi/ic_launcher.png
0 → 100644
2.98 KB
4.91 KB
217 Bytes
513 Bytes
310 Bytes
app/src/main/res/mipmap-mdpi/ic_launcher.png
0 → 100644
2.05 KB
2.79 KB
885 Bytes
528 Bytes
1012 Bytes
737 Bytes
731 Bytes
4.46 KB
6.93 KB
6.31 KB
10.4 KB
9.03 KB
15.2 KB
app/src/main/res/mipmap-xxxhdpi/logo.png
0 → 100644
13.7 KB
app/src/main/res/values/colors.xml
0 → 100644
app/src/main/res/values/dimens.xml
0 → 100644
app/src/main/res/values/strings.xml
0 → 100644
app/src/main/res/values/styles.xml
0 → 100644
1 | <resources> | ||
2 | |||
3 | <!-- Base application theme. --> | ||
4 | <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> | ||
5 | <!-- Customize your theme here. --> | ||
6 | <item name="colorPrimary">@color/colorPrimary</item> | ||
7 | <item name="colorPrimaryDark">@color/colorPrimaryDark</item> | ||
8 | <item name="colorAccent">@color/colorAccent</item> | ||
9 | </style> | ||
10 | |||
11 | <style name="AppTheme.NoActionBar"> | ||
12 | <item name="windowActionBar">false</item> | ||
13 | <item name="windowNoTitle">true</item> | ||
14 | </style> | ||
15 | |||
16 | <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> | ||
17 | |||
18 | <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> | ||
19 | |||
20 | </resources> |
1 | package com.pashanhoo.landsurvey; | ||
2 | |||
3 | import org.junit.Test; | ||
4 | |||
5 | import static org.junit.Assert.*; | ||
6 | |||
7 | /** | ||
8 | * Example local unit test, which will execute on the development machine (host). | ||
9 | * | ||
10 | * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
11 | */ | ||
12 | public class ExampleUnitTest { | ||
13 | @Test | ||
14 | public void addition_isCorrect() throws Exception { | ||
15 | assertEquals(4, 2 + 2); | ||
16 | } | ||
17 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
build.gradle
0 → 100644
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
2 | |||
3 | buildscript { | ||
4 | |||
5 | repositories { | ||
6 | google() | ||
7 | jcenter() | ||
8 | } | ||
9 | dependencies { | ||
10 | classpath 'com.android.tools.build:gradle:3.0.1' | ||
11 | |||
12 | |||
13 | // NOTE: Do not place your application dependencies here; they belong | ||
14 | // in the individual module build.gradle files | ||
15 | } | ||
16 | } | ||
17 | |||
18 | allprojects { | ||
19 | repositories { | ||
20 | google() | ||
21 | jcenter() | ||
22 | maven { | ||
23 | url 'https://esri.bintray.com/arcgis' | ||
24 | } | ||
25 | maven { | ||
26 | url 'https://jitpack.io' | ||
27 | } | ||
28 | } | ||
29 | } | ||
30 | |||
31 | task clean(type: Delete) { | ||
32 | delete rootProject.buildDir | ||
33 | } |
gradle.properties
0 → 100644
1 | # Project-wide Gradle settings. | ||
2 | |||
3 | # IDE (e.g. Android Studio) users: | ||
4 | # Gradle settings configured through the IDE *will override* | ||
5 | # any settings specified in this file. | ||
6 | |||
7 | # For more details on how to configure your build environment visit | ||
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html | ||
9 | |||
10 | # Specifies the JVM arguments used for the daemon process. | ||
11 | # The setting is particularly useful for tweaking memory settings. | ||
12 | org.gradle.jvmargs=-Xmx1536m | ||
13 | |||
14 | # When configured, Gradle will run in incubating parallel mode. | ||
15 | # This option should only be used with decoupled projects. More details, visit | ||
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects | ||
17 | # org.gradle.parallel=true |
gradle/wrapper/gradle-wrapper.jar
0 → 100644
No preview for this file type
gradle/wrapper/gradle-wrapper.properties
0 → 100644
gradlew
0 → 100755
1 | #!/usr/bin/env bash | ||
2 | |||
3 | ############################################################################## | ||
4 | ## | ||
5 | ## Gradle start up script for UN*X | ||
6 | ## | ||
7 | ############################################################################## | ||
8 | |||
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
10 | DEFAULT_JVM_OPTS="" | ||
11 | |||
12 | APP_NAME="Gradle" | ||
13 | APP_BASE_NAME=`basename "$0"` | ||
14 | |||
15 | # Use the maximum available, or set MAX_FD != -1 to use that value. | ||
16 | MAX_FD="maximum" | ||
17 | |||
18 | warn ( ) { | ||
19 | echo "$*" | ||
20 | } | ||
21 | |||
22 | die ( ) { | ||
23 | echo | ||
24 | echo "$*" | ||
25 | echo | ||
26 | exit 1 | ||
27 | } | ||
28 | |||
29 | # OS specific support (must be 'true' or 'false'). | ||
30 | cygwin=false | ||
31 | msys=false | ||
32 | darwin=false | ||
33 | case "`uname`" in | ||
34 | CYGWIN* ) | ||
35 | cygwin=true | ||
36 | ;; | ||
37 | Darwin* ) | ||
38 | darwin=true | ||
39 | ;; | ||
40 | MINGW* ) | ||
41 | msys=true | ||
42 | ;; | ||
43 | esac | ||
44 | |||
45 | # Attempt to set APP_HOME | ||
46 | # Resolve links: $0 may be a link | ||
47 | PRG="$0" | ||
48 | # Need this for relative symlinks. | ||
49 | while [ -h "$PRG" ] ; do | ||
50 | ls=`ls -ld "$PRG"` | ||
51 | link=`expr "$ls" : '.*-> \(.*\)$'` | ||
52 | if expr "$link" : '/.*' > /dev/null; then | ||
53 | PRG="$link" | ||
54 | else | ||
55 | PRG=`dirname "$PRG"`"/$link" | ||
56 | fi | ||
57 | done | ||
58 | SAVED="`pwd`" | ||
59 | cd "`dirname \"$PRG\"`/" >/dev/null | ||
60 | APP_HOME="`pwd -P`" | ||
61 | cd "$SAVED" >/dev/null | ||
62 | |||
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
64 | |||
65 | # Determine the Java command to use to start the JVM. | ||
66 | if [ -n "$JAVA_HOME" ] ; then | ||
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
68 | # IBM's JDK on AIX uses strange locations for the executables | ||
69 | JAVACMD="$JAVA_HOME/jre/sh/java" | ||
70 | else | ||
71 | JAVACMD="$JAVA_HOME/bin/java" | ||
72 | fi | ||
73 | if [ ! -x "$JAVACMD" ] ; then | ||
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
75 | |||
76 | Please set the JAVA_HOME variable in your environment to match the | ||
77 | location of your Java installation." | ||
78 | fi | ||
79 | else | ||
80 | JAVACMD="java" | ||
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
82 | |||
83 | Please set the JAVA_HOME variable in your environment to match the | ||
84 | location of your Java installation." | ||
85 | fi | ||
86 | |||
87 | # Increase the maximum file descriptors if we can. | ||
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then | ||
89 | MAX_FD_LIMIT=`ulimit -H -n` | ||
90 | if [ $? -eq 0 ] ; then | ||
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
92 | MAX_FD="$MAX_FD_LIMIT" | ||
93 | fi | ||
94 | ulimit -n $MAX_FD | ||
95 | if [ $? -ne 0 ] ; then | ||
96 | warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
97 | fi | ||
98 | else | ||
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
100 | fi | ||
101 | fi | ||
102 | |||
103 | # For Darwin, add options to specify how the application appears in the dock | ||
104 | if $darwin; then | ||
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
106 | fi | ||
107 | |||
108 | # For Cygwin, switch paths to Windows format before running java | ||
109 | if $cygwin ; then | ||
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
112 | JAVACMD=`cygpath --unix "$JAVACMD"` | ||
113 | |||
114 | # We build the pattern for arguments to be converted via cygpath | ||
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
116 | SEP="" | ||
117 | for dir in $ROOTDIRSRAW ; do | ||
118 | ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
119 | SEP="|" | ||
120 | done | ||
121 | OURCYGPATTERN="(^($ROOTDIRS))" | ||
122 | # Add a user-defined pattern to the cygpath arguments | ||
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
125 | fi | ||
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
127 | i=0 | ||
128 | for arg in "$@" ; do | ||
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
131 | |||
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
134 | else | ||
135 | eval `echo args$i`="\"$arg\"" | ||
136 | fi | ||
137 | i=$((i+1)) | ||
138 | done | ||
139 | case $i in | ||
140 | (0) set -- ;; | ||
141 | (1) set -- "$args0" ;; | ||
142 | (2) set -- "$args0" "$args1" ;; | ||
143 | (3) set -- "$args0" "$args1" "$args2" ;; | ||
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
150 | esac | ||
151 | fi | ||
152 | |||
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules | ||
154 | function splitJvmOpts() { | ||
155 | JVM_OPTS=("$@") | ||
156 | } | ||
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS | ||
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" | ||
159 | |||
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" |
gradlew.bat
0 → 100644
1 | @if "%DEBUG%" == "" @echo off | ||
2 | @rem ########################################################################## | ||
3 | @rem | ||
4 | @rem Gradle startup script for Windows | ||
5 | @rem | ||
6 | @rem ########################################################################## | ||
7 | |||
8 | @rem Set local scope for the variables with windows NT shell | ||
9 | if "%OS%"=="Windows_NT" setlocal | ||
10 | |||
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
12 | set DEFAULT_JVM_OPTS= | ||
13 | |||
14 | set DIRNAME=%~dp0 | ||
15 | if "%DIRNAME%" == "" set DIRNAME=. | ||
16 | set APP_BASE_NAME=%~n0 | ||
17 | set APP_HOME=%DIRNAME% | ||
18 | |||
19 | @rem Find java.exe | ||
20 | if defined JAVA_HOME goto findJavaFromJavaHome | ||
21 | |||
22 | set JAVA_EXE=java.exe | ||
23 | %JAVA_EXE% -version >NUL 2>&1 | ||
24 | if "%ERRORLEVEL%" == "0" goto init | ||
25 | |||
26 | echo. | ||
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
28 | echo. | ||
29 | echo Please set the JAVA_HOME variable in your environment to match the | ||
30 | echo location of your Java installation. | ||
31 | |||
32 | goto fail | ||
33 | |||
34 | :findJavaFromJavaHome | ||
35 | set JAVA_HOME=%JAVA_HOME:"=% | ||
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||
37 | |||
38 | if exist "%JAVA_EXE%" goto init | ||
39 | |||
40 | echo. | ||
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
42 | echo. | ||
43 | echo Please set the JAVA_HOME variable in your environment to match the | ||
44 | echo location of your Java installation. | ||
45 | |||
46 | goto fail | ||
47 | |||
48 | :init | ||
49 | @rem Get command-line arguments, handling Windowz variants | ||
50 | |||
51 | if not "%OS%" == "Windows_NT" goto win9xME_args | ||
52 | if "%@eval[2+2]" == "4" goto 4NT_args | ||
53 | |||
54 | :win9xME_args | ||
55 | @rem Slurp the command line arguments. | ||
56 | set CMD_LINE_ARGS= | ||
57 | set _SKIP=2 | ||
58 | |||
59 | :win9xME_args_slurp | ||
60 | if "x%~1" == "x" goto execute | ||
61 | |||
62 | set CMD_LINE_ARGS=%* | ||
63 | goto execute | ||
64 | |||
65 | :4NT_args | ||
66 | @rem Get arguments from the 4NT Shell from JP Software | ||
67 | set CMD_LINE_ARGS=%$ | ||
68 | |||
69 | :execute | ||
70 | @rem Setup the command line | ||
71 | |||
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||
73 | |||
74 | @rem Execute Gradle | ||
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | ||
76 | |||
77 | :end | ||
78 | @rem End local scope for the variables with windows NT shell | ||
79 | if "%ERRORLEVEL%"=="0" goto mainEnd | ||
80 | |||
81 | :fail | ||
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||
83 | rem the _cmd.exe /c_ return code! | ||
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||
85 | exit /b 1 | ||
86 | |||
87 | :mainEnd | ||
88 | if "%OS%"=="Windows_NT" endlocal | ||
89 | |||
90 | :omega |
settings.gradle
0 → 100644
1 | include ':app' |
-
Please register or sign in to post a comment