Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
蒋波涛
/
landsurvey
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
07d77721
authored
2018-03-28 20:49:33 +0800
by
chiangbt
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
update 3.28
1 parent
85a18886
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
122 additions
and
234 deletions
app/src/main/java/com/pashanhoo/landsurvey/GoogleMapActivity.java
app/src/main/java/com/pashanhoo/landsurvey/layers/google/GoogleMapLayer.java
app/src/main/java/com/pashanhoo/landsurvey/layers/google/GoogleMapsTiledServiceLayer.java
app/src/main/java/com/pashanhoo/landsurvey/utils/GisHolder.java → app/src/main/java/com/pashanhoo/landsurvey/utils/GISHelper.java
app/src/main/res/layout/activity_google_map.xml
app/src/main/java/com/pashanhoo/landsurvey/GoogleMapActivity.java
View file @
07d7772
package
com
.
pashanhoo
.
landsurvey
;
import
android.location.Location
;
import
android.location.LocationListener
;
import
android.support.design.widget.FloatingActionButton
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.view.View
;
import
com.esri.android.map.LocationDisplayManager
;
import
com.esri.android.map.MapView
;
import
com.esri.android.runtime.ArcGISRuntime
;
import
com.esri.core.geometry.Point
;
import
com.pashanhoo.landsurvey.R
;
import
com.pashanhoo.landsurvey.layers.google.GoogleMapLayer
;
import
com.pashanhoo.landsurvey.layers.google.GoogleMapLayerTypes
;
import
com.pashanhoo.landsurvey.layers.google.GoogleMapsTiledServiceLayer
;
import
com.pashanhoo.landsurvey.layers.tianditu.TDTTileinfo
;
import
com.pashanhoo.landsurvey.utils.AppInfo
;
import
com.pashanhoo.landsurvey.utils.GisHolder
;
import
com.pashanhoo.landsurvey.utils.GISHelper
;
import
com.pashanhoo.landsurvey.utils.JZLocationConverter
;
public
class
GoogleMapActivity
extends
AppCompatActivity
{
private
MapView
mapView
;
// GPS定位器对象
private
LocationDisplayManager
locationDisplayManager
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
...
...
@@ -28,14 +33,58 @@ public class GoogleMapActivity extends AppCompatActivity {
mapView
.
setEsriLogoVisible
(
false
);
mapView
.
enableWrapAround
(
false
);
GoogleMapsTiledServiceLayer
GOOGLE_VECTOR_Layer
=
new
GoogleMapsTiledServiceLayer
();
GoogleMapsTiledServiceLayer
GOOGLE_VECTOR_Layer
=
new
GoogleMapsTiledServiceLayer
(
GoogleMapLayerTypes
.
VECTOR_GOOGLE_MAP
);
// GoogleMapsTiledServiceLayer GOOGLE_TER_Layer = new GoogleMapsTiledServiceLayer(GoogleMapLayerTypes.TERRAIN_GOOGLE_MAP);
// GoogleMapsTiledServiceLayer GOOGLE_IMAGE_Layer = new GoogleMapsTiledServiceLayer(GoogleMapLayerTypes.IMAGE_GOOGLE_MAP);
mapView
.
addLayer
(
GOOGLE_VECTOR_Layer
);
// GoogleMapsTiledServiceLayer GOOGLE_ANNO_Layer = new GoogleMapsTiledServiceLayer(GoogleMapLayerTypes.ANNOTATION_GOOGLE_MAP);
// mapView.addLayer(GOOGLE_ANNO_Layer);
mapView
.
setMaxResolution
(
156543.03392800014
);
mapView
.
setMinResolution
(
1.1943285668550503
);
mapView
.
setMinResolution
(
0.29858214164761665
);
Point
pt
=
GISHelper
.
lonLat2Mercator
(
AppInfo
.
initPoint
);
mapView
.
zoomToResolution
(
pt
,
GoogleMapsTiledServiceLayer
.
getRes
()[
16
]);
locationDisplayManager
=
mapView
.
getLocationDisplayManager
();
locationDisplayManager
.
setShowLocation
(
true
);
locationDisplayManager
.
setAutoPanMode
(
LocationDisplayManager
.
AutoPanMode
.
LOCATION
);
//设置模式
locationDisplayManager
.
setShowPings
(
true
);
locationDisplayManager
.
setLocationListener
(
new
LocationListener
()
{
@Override
public
void
onLocationChanged
(
Location
location
)
{
Point
pt
=
new
Point
(
location
.
getLongitude
(),
location
.
getLatitude
());
Point
gcjPt
=
JZLocationConverter
.
wgs84ToGcj02
(
pt
);
mapView
.
zoomToResolution
(
GISHelper
.
lonLat2Mercator
(
gcjPt
),
GoogleMapsTiledServiceLayer
.
getRes
()[
18
]);
}
@Override
public
void
onStatusChanged
(
String
s
,
int
i
,
Bundle
bundle
)
{
}
Point
pt
=
GisHolder
.
lonLat2Mercator
(
AppInfo
.
initPoint
);
mapView
.
zoomToResolution
(
pt
,
19.1092570712683
);
@Override
public
void
onProviderEnabled
(
String
s
)
{
}
@Override
public
void
onProviderDisabled
(
String
s
)
{
}
});
FloatingActionButton
gps
=
(
FloatingActionButton
)
findViewById
(
R
.
id
.
gps
);
gps
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
// 设置GPS功能
if
(
locationDisplayManager
.
isStarted
())
{
locationDisplayManager
.
stop
();
}
else
{
locationDisplayManager
.
start
();
mapView
.
zoomToResolution
(
GISHelper
.
lonLat2Mercator
(
locationDisplayManager
.
getPoint
()),
GoogleMapsTiledServiceLayer
.
getRes
()[
18
]);
}
}
});
}
}
...
...
app/src/main/java/com/pashanhoo/landsurvey/layers/google/GoogleMapLayer.java
deleted
100644 → 0
View file @
85a1888
package
com
.
pashanhoo
.
landsurvey
.
layers
.
google
;
import
android.util.Log
;
import
com.esri.android.map.TiledServiceLayer
;
import
com.esri.core.geometry.Envelope
;
import
com.esri.core.geometry.Point
;
import
com.esri.core.geometry.SpatialReference
;
import
java.util.Map
;
import
java.util.concurrent.RejectedExecutionException
;
/**
* Created by jiangbotao on 2018/3/28.
*/
public
class
GoogleMapLayer
extends
TiledServiceLayer
{
private
int
minLevel
=
0
;
private
int
maxLevel
=
19
;
private
String
[]
subDomains
=
new
String
[]{
"mt1"
,
"mt2"
,
"mt3"
};
private
double
[]
scales
=
new
double
[]{
591657527.591555
,
295828763.79577702
,
147914381.89788899
,
73957190.948944002
,
36978595.474472001
,
18489297.737236001
,
9244648.8686180003
,
4622324.4343090001
,
2311162.217155
,
1155581.108577
,
577790.554289
,
288895.277144
,
144447.638572
,
72223.819286
,
36111.909643
,
18055.954822
,
9027.9774109999998
,
4513.9887049999998
,
2256.994353
,
1128.4971760000001
};
private
double
[]
resolutions
=
new
double
[]{
156543.03392800014
,
78271.516963999937
,
39135.758482000092
,
19567.879240999919
,
9783.9396204999593
,
4891.9698102499797
,
2445.9849051249898
,
1222.9924525624949
,
611.49622628138
,
305.748113140558
,
152.874056570411
,
76.4370282850732
,
38.2185141425366
,
19.1092570712683
,
9.55462853563415
,
4.7773142679493699
,
2.3886571339746849
,
1.1943285668550503
,
0.59716428355981721
,
0.29858214164761665
};
private
Point
origin
=
new
Point
(-
20037508.342787
,
20037508.342787
);
private
int
dpi
=
96
;
private
int
tileWidth
=
256
;
private
int
tileHeight
=
256
;
private
int
GoogleMapLayerType
;
public
GoogleMapLayer
(
int
layerType
)
{
super
(
true
);
this
.
GoogleMapLayerType
=
layerType
;
this
.
init
();
}
private
void
init
()
{
try
{
getServiceExecutor
().
submit
(
new
Runnable
()
{
public
void
run
()
{
GoogleMapLayer
.
this
.
initLayer
();
}
});
}
catch
(
RejectedExecutionException
rejectedexecutionexception
)
{
Log
.
e
(
"Google Map Layer"
,
"initialization of the layer failed."
,
rejectedexecutionexception
);
}
}
protected
byte
[]
getTile
(
int
level
,
int
col
,
int
row
)
throws
Exception
{
if
(
level
>
maxLevel
||
level
<
minLevel
)
{
return
new
byte
[
0
];
}
String
s
=
"Galileo"
.
substring
(
0
,
((
3
*
col
+
row
)
%
8
));
String
url
=
""
;
switch
(
GoogleMapLayerType
)
{
case
GoogleMapLayerTypes
.
IMAGE_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.com/vt/lyrs=s&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
break
;
case
GoogleMapLayerTypes
.
VECTOR_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.com/vt/lyrs=m@158000000&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
break
;
case
GoogleMapLayerTypes
.
TERRAIN_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.cn/vt/lyrs=t@131,r@227000000&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
break
;
case
GoogleMapLayerTypes
.
ANNOTATION_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.com/vt/imgtp=png32&lyrs=h@169000000&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
// url = "http://mt"+ (col % 4) +".google.cn/vt/lyrs=m@256000000&hl=zh-CN&gl=CN&src=app&x=" + col + "&y=" + row + "&z=" + level + "&s=" + s;
break
;
}
Log
.
v
(
GoogleMapLayer
.
class
.
getName
(),
"url:"
+
url
);
Map
<
String
,
String
>
map
=
null
;
return
com
.
esri
.
core
.
internal
.
io
.
handler
.
a
.
a
(
url
,
map
);
}
protected
void
initLayer
()
{
if
(
getID
()
==
0L
)
{
nativeHandle
=
create
();
changeStatus
(
com
.
esri
.
android
.
map
.
event
.
OnStatusChangedListener
.
STATUS
.
fromInt
(-
1000
));
}
else
{
this
.
setDefaultSpatialReference
(
SpatialReference
.
create
(
102113
));
this
.
setFullExtent
(
new
Envelope
(-
22041257.773878
,
-
32673939.6727517
,
22041257.773878
,
20851350.0432886
));
this
.
setTileInfo
(
new
TileInfo
(
origin
,
scales
,
resolutions
,
scales
.
length
,
dpi
,
tileWidth
,
tileHeight
));
super
.
initLayer
();
}
}
}
app/src/main/java/com/pashanhoo/landsurvey/layers/google/GoogleMapsTiledServiceLayer.java
View file @
07d7772
package
com
.
pashanhoo
.
landsurvey
.
layers
.
google
;
import
com.esri.android.map.TiledServiceLayer
;
import
java.util.concurrent.RejectedExecutionException
;
import
android.annotation.SuppressLint
;
import
android.util.Log
;
import
com.esri.android.map.TiledServiceLayer
;
import
com.esri.android.map.event.OnStatusChangedListener
;
import
com.esri.core.geometry.Envelope
;
import
com.esri.core.geometry.Point
;
...
...
@@ -14,7 +14,7 @@ import com.esri.core.geometry.SpatialReference;
import
com.esri.core.internal.io.handler.ResponseListener
;
import
com.esri.core.internal.io.handler.a
;
import
com.esri.core.io.UserCredentials
;
import
com.pashanhoo.landsurvey.utils.G
isHold
er
;
import
com.pashanhoo.landsurvey.utils.G
ISHelp
er
;
/**
* Created by jiangbotao on 2018/3/28.
...
...
@@ -28,23 +28,27 @@ public class GoogleMapsTiledServiceLayer extends TiledServiceLayer {
private
static
final
double
XMin
=
110.35992000000005
;
private
static
final
double
YMin
=
31.382360000000062
;
private
static
final
double
XMax
=
116.65036000000009
;
private
static
final
double
YMax
=
36.36647000000005
;
private
static
final
double
[]
res
=
{
156543.03392800014
,
78271.516963999937
,
39135.758482000092
,
19567.879240999919
,
9783.9396204999593
,
4891.9698102499797
,
2445.9849051249898
,
private
static
final
double
[]
res
=
{
156543.03392800014
,
78271.516963999937
,
39135.758482000092
,
19567.879240999919
,
9783.9396204999593
,
4891.9698102499797
,
2445.9849051249898
,
1222.9924525624949
,
611.49622628138
,
305.748113140558
,
152.874056570411
,
76.4370282850732
,
38.2185141425366
,
19.1092570712683
,
9.55462853563415
,
4.7773142679493699
,
2.3886571339746849
,
1.1943285668550503
/* , 0.59716428355981721, 0.29858214164761665 */
};
1.1943285668550503
,
0.59716428355981721
,
0.29858214164761665
};
private
static
final
double
[]
scale
=
{
591657527.591555
,
295828763.79577702
,
147914381.89788899
,
73957190.948944002
,
36978595.474472001
,
18489297.737236001
,
9244648.8686180003
,
private
static
final
double
[]
scale
=
{
591657527.591555
,
295828763.79577702
,
147914381.89788899
,
73957190.948944002
,
36978595.474472001
,
18489297.737236001
,
9244648.8686180003
,
4622324.4343090001
,
2311162.217155
,
1155581.108577
,
577790.554289
,
288895.277144
,
144447.638572
,
72223.819286
,
6111.909643
,
18055.954822
,
9027.9774109999998
,
4513.9887049999998
/* ,2256.994353, 1128.4971760000001 */
};
,
2256.994353
,
1128.4971760000001
};
private
static
String
URL
=
"http://maps.iwxlh.com"
;
private
ResponseListener
responseListener
;
private
static
Point
origin
=
new
Point
(-
20037508.342787
,
20037508.342787
);
public
GoogleMapsTiledServiceLayer
()
{
private
int
GoogleMapLayerType
;
public
GoogleMapsTiledServiceLayer
(
int
layerType
)
{
this
(
true
);
this
.
GoogleMapLayerType
=
layerType
;
}
public
GoogleMapsTiledServiceLayer
(
boolean
initLayer
)
{
...
...
@@ -64,6 +68,10 @@ public class GoogleMapsTiledServiceLayer extends TiledServiceLayer {
}
}
public
static
double
[]
getRes
()
{
return
res
;
}
protected
void
initLayer
()
{
if
(
getID
()
==
0L
)
{
this
.
nativeHandle
=
create
();
...
...
@@ -74,8 +82,8 @@ public class GoogleMapsTiledServiceLayer extends TiledServiceLayer {
try
{
setDefaultSpatialReference
(
SpatialReference
.
create
(
102100
));
G
isHold
er
.
lonLat2Mercator
(
new
Point
(
XMin
,
YMin
));
G
isHold
er
.
lonLat2Mercator
(
new
Point
(
XMax
,
YMax
));
G
ISHelp
er
.
lonLat2Mercator
(
new
Point
(
XMin
,
YMin
));
G
ISHelp
er
.
lonLat2Mercator
(
new
Point
(
XMax
,
YMax
));
setFullExtent
(
new
Envelope
(
xmin
,
ymin
,
xmax
,
ymax
));
// setFullExtent(new Envelope(minMercatorPoint.getX(),
...
...
@@ -90,19 +98,26 @@ public class GoogleMapsTiledServiceLayer extends TiledServiceLayer {
}
}
static
final
String
BASE_URL
=
"http://mt%d.google.cn/vt/lyrs=m@161000000&v=w2.114&hl=zh-CN&gl=cn&x=%d&y=%d&z=%d&s=Galil"
;
static
final
String
BASE_URL_2
=
"http://mt2.google.cn/vt/v=w2.116&hl=zh-CN&gl=cn&x=%d&y=%d&z=%d&s=G"
;
String
get
(
int
lev
,
int
col
,
int
row
)
{
return
"http://mt"
+
(
col
%
4
)
+
".google.cn/vt/lyrs=m@161000000&v=w2.114&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
lev
+
"&s=Galil"
;
// 加载Google街道图
}
@SuppressLint
(
"DefaultLocale"
)
protected
byte
[]
getTile
(
int
lev
,
int
col
,
int
row
)
throws
Exception
{
String
url
=
String
.
format
(
BASE_URL
,
col
%
4
,
col
,
row
,
lev
);
// 加载Google街道图
// String url2 = String.format(BASE_URL_2, col, row, lev); // 加载Google街道图
// PtaDebug.d("url", url);
// PtaDebug.e("url2", url2);
protected
byte
[]
getTile
(
int
level
,
int
col
,
int
row
)
throws
Exception
{
String
url
=
""
;
String
s
=
"Galil"
;
switch
(
GoogleMapLayerType
)
{
case
GoogleMapLayerTypes
.
IMAGE_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.cn/vt/lyrs=s&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
break
;
case
GoogleMapLayerTypes
.
VECTOR_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.cn/vt/lyrs=m@161000000&v=w2.114&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
break
;
case
GoogleMapLayerTypes
.
TERRAIN_GOOGLE_MAP
:
url
=
"http://mt"
+
(
col
%
4
)
+
".google.cn/vt/lyrs=t@131,r@227000000&hl=zh-CN&gl=cn&"
+
"x="
+
col
+
"&"
+
"y="
+
row
+
"&"
+
"z="
+
level
+
"&"
+
"s="
+
s
;
break
;
case
GoogleMapLayerTypes
.
ANNOTATION_GOOGLE_MAP
:
// url = "http://mt2.google.cn/vt/lyrs=m@161000000&v=w2.114&hl=zh-CN&gl=CN&src=app&x=" + col + "&y=" + row + "&z=" + level + "&s=" + s;
url
=
"http://webst02.is.autonavi.com/appmaptile?style=8&x="
+
col
+
"&y="
+
row
+
"&z="
+
level
;
break
;
}
return
a
.
a
(
url
,
null
,
null
,
this
.
responseListener
);
}
...
...
app/src/main/java/com/pashanhoo/landsurvey/utils/G
isHold
er.java
→
app/src/main/java/com/pashanhoo/landsurvey/utils/G
ISHelp
er.java
View file @
07d7772
...
...
@@ -5,22 +5,14 @@ package com.pashanhoo.landsurvey.utils;
*/
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
import
android.graphics.Bitmap
;
import
android.util.Log
;
import
com.esri.android.map.GraphicsLayer
;
import
com.esri.android.map.MapView
;
import
com.esri.core.geometry.GeometryEngine
;
import
com.esri.core.geometry.Line
;
import
com.esri.core.geometry.Point
;
import
com.esri.core.geometry.Polygon
;
import
com.esri.core.geometry.Polyline
;
import
com.esri.core.geometry.SpatialReference
;
import
com.esri.core.map.Graphic
;
import
com.esri.core.symbol.SimpleLineSymbol
;
/**
* GIS相关持有工具类
...
...
@@ -28,13 +20,13 @@ import com.esri.core.symbol.SimpleLineSymbol;
* @author JiangXusheng
* @date 2013-7-6 下午1:16:07
*/
public
class
G
isHold
er
{
public
class
G
ISHelp
er
{
public
static
final
int
VALIDATE_X_Y
=
999
;
public
static
final
double
AX
=
0.83
;
public
static
final
double
BX
=
1
-
AX
;
static
final
String
TAG
=
G
isHold
er
.
class
.
getName
();
static
final
String
TAG
=
G
ISHelp
er
.
class
.
getName
();
public
enum
MarkerSymbolType
{
TEXT
,
IMAGE
,
SIMPLE
,
IMAGE_TEXT
,
SIMPLE_TEXT
,
SIMPLE_LINE
;
...
...
@@ -42,7 +34,9 @@ public class GisHolder {
private
static
final
double
EARTH_RADIUS
=
6378137.0
;
/** 计算两点间的距离 */
/**
* 计算两点间的距离
*/
public
static
double
gps2m
(
double
lat_a
,
double
lng_a
,
double
lat_b
,
double
lng_b
)
{
double
radLat1
=
(
lat_a
*
Math
.
PI
/
180.0
);
double
radLat2
=
(
lat_b
*
Math
.
PI
/
180.0
);
...
...
@@ -55,7 +49,10 @@ public class GisHolder {
}
// 计算方位角pab。
/** 计算方位角 */
/**
* 计算方位角
*/
public
static
double
gps2d
(
double
lat_a
,
double
lng_a
,
double
lat_b
,
double
lng_b
)
{
double
d
=
0
;
lat_a
=
lat_a
*
Math
.
PI
/
180
;
...
...
@@ -94,21 +91,6 @@ public class GisHolder {
return
AX
*
dN
+
BX
*
dPieN_1
;
}
public
static
double
getScreenM
(
MapView
mapView
,
Point
point1
,
Point
point2
,
boolean
toMocha
)
{
point1
=
GisHolder
.
checkGeometryPoint
(
point1
);
point2
=
GisHolder
.
checkGeometryPoint
(
point2
);
if
(
toMocha
)
{
point1
=
GisHolder
.
lonLat2Mercator
(
point1
);
point2
=
GisHolder
.
lonLat2Mercator
(
point2
);
}
Point
screenPoint1
=
mapView
.
toScreenPoint
(
point1
);
Point
screenPoint2
=
mapView
.
toScreenPoint
(
point2
);
return
Math
.
sqrt
((
screenPoint1
.
getX
()
-
screenPoint2
.
getX
())
*
(
screenPoint1
.
getX
()
-
screenPoint2
.
getX
())
+
(
screenPoint1
.
getY
()
-
screenPoint2
.
getY
())
*
(
screenPoint1
.
getY
()
-
screenPoint2
.
getY
()));
}
public
static
boolean
isValidateData
(
Point
point
)
{
boolean
rst
=
false
;
...
...
@@ -127,28 +109,11 @@ public class GisHolder {
return
(
x
/
1000000.0
);
}
public
static
Point
checkGeometryPoint
(
Point
point
)
{
try
{
if
(
null
==
point
)
{
point
=
new
Point
();
}
if
(
point
.
isEmpty
())
{
point
.
setX
(
VALIDATE_X_Y
);
point
.
setY
(
VALIDATE_X_Y
);
}
}
catch
(
Exception
e
)
{
point
.
setX
(
VALIDATE_X_Y
);
point
.
setY
(
VALIDATE_X_Y
);
}
return
point
;
}
private
static
DecimalFormat
format
=
new
DecimalFormat
(
"0.0"
);
// 经纬度转墨卡托
/**
* SpatialReference.WKID_WGS84(4326) to
* SpatialReference.WKID_WGS84_WEB_MERCATOR_AUXILIARY_SPHERE(102100)
...
...
@@ -171,6 +136,7 @@ public class GisHolder {
}
// 墨卡托转经纬度
/**
* SpatialReference.WKID_WGS84_WEB_MERCATOR_AUXILIARY_SPHERE(102100) to
* SpatialReference.WKID_WGS84(4326)
...
...
@@ -189,33 +155,4 @@ public class GisHolder {
return
point
;
}
public
static
Point
[]
getPoints
(
Point
center
,
double
radius
)
{
Point
[]
points
=
new
Point
[
50
];
double
sin
;
double
cos
;
double
x
;
double
y
;
for
(
double
i
=
0
;
i
<
50
;
i
++)
{
sin
=
Math
.
sin
(
Math
.
PI
*
2
*
i
/
50
);
cos
=
Math
.
cos
(
Math
.
PI
*
2
*
i
/
50
);
x
=
center
.
getX
()
+
radius
*
1.2
*
sin
;
y
=
center
.
getY
()
+
radius
*
cos
;
points
[(
int
)
i
]
=
new
Point
(
x
,
y
);
}
return
points
;
}
public
static
void
getCircle
(
Point
center
,
double
radius
,
Polygon
circle
)
{
circle
.
setEmpty
();
try
{
Point
[]
points
=
getPoints
(
center
,
radius
);
circle
.
startPath
(
GisHolder
.
lonLat2Mercator
(
points
[
0
]));
for
(
int
i
=
1
;
i
<
points
.
length
;
i
++)
{
points
[
i
]
=
GisHolder
.
checkGeometryPoint
(
points
[
i
]);
circle
.
lineTo
(
GisHolder
.
lonLat2Mercator
(
points
[
i
]));
}
}
catch
(
Exception
e
)
{
Log
.
e
(
""
,
""
,
e
);
}
}
}
...
...
app/src/main/res/layout/activity_google_map.xml
View file @
07d7772
...
...
@@ -10,4 +10,22 @@
android:id=
"@+id/map"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
></com.esri.android.map.MapView>
<android.support.v7.widget.LinearLayoutCompat
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:layout_marginTop=
"16dp"
android:layout_marginLeft=
"16dp"
android:layout_marginBottom=
"16dp"
android:layout_gravity=
"top|start"
>
<android.support.design.widget.FloatingActionButton
android:id=
"@+id/gps"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"top|start"
android:layout_marginTop=
"0dp"
android:layout_marginLeft=
"0dp"
app:srcCompat=
"@mipmap/ic_my_location_white_48dp"
/>
</android.support.v7.widget.LinearLayoutCompat>
</android.support.constraint.ConstraintLayout>
...
...
Please
register
or
sign in
to post a comment