文中代码在手机端不好查看的话,可以通过文末的百度云盘地址下载,或者联系作者索取。
韩源萌([email protected])
基础底图
移动地图程序的基础,在于“一张图”,外业调绘、导航类、成果展示、统计应用等都需要一张基本的底图来支撑。往往底图的好坏决定了整个移动地图的根基。
在线基础底图(Online Tiled Layers)
在线基础底图包括传统GIS(ArcGIS Server)和WebGIS(Online & Portal)。使用方式上确实不同,传统GIS是通过Layer直接对接地图服务(ArcGIS Server发布的)。WebGIS是同过ArcGISMap来对接WebMap。
WebGIS(Online & Portal)
通过Online或者Portal可以便捷快速的制作出更简洁智能的地图资源,用以表达我们的目的,对于移动端而言这些Web Map可以直接应用。
package hymn.esrichina.displayamaponlineandportal;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.LayerList;
import com.esri.arcgisruntime.mapping.view.MapView;
public class MainActivity extends AppCompatActivity {
private MapView mainMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
String theURLString =
"http://www.arcgis.com/home/webmap/viewer.html?
webmap=55c1665bcd064552944a9e8296271ec3";
mainMapView = (MapView) findViewById(R.id.mainMapView);
ArcGISMap mainArcGISMap = new ArcGISMap(theURLString);
Basemap mainBasemap = mainArcGISMap.getBasemap();
LayerList mainLayerList = mainArcGISMap.getOperationalLayers();
mainMapView.setMap(mainArcGISMap);
}
catch (Exception e)
{
}
}
}
传统GIS
对于一直使用ArcGIS Server发布地图服务的,可以直接使用地图服务(Layer)来加载在线的地图服务(ArcGIS Server)。
package hymn.esrichina.displayamaparcgisserver;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.LayerList;
import com.esri.arcgisruntime.mapping.view.MapView;
public class MainActivity extends AppCompatActivity {
private MapView mainMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
String theURLString =
"http://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer";
mainMapView = (MapView) findViewById(R.id.mainMapView);
ArcGISTiledLayer mainArcGISTiledLayer
= new ArcGISTiledLayer(theURLString);
Basemap mainBasemap
= new Basemap(mainArcGISTiledLayer);
ArcGISMap mainArcGISMap = new ArcGISMap(mainBasemap);
mainMapView.setMap(mainArcGISMap);
}
catch (Exception e)
{
}
}
}
在线矢量切片
ArcGIS新出的矢量切片也有在线模式,也不失为好的选择。在线的地址管理在ArcGIS Online或者ArcGIS Portal当中,参考地址如下:
https://www.arcgis.com/home/item.html?id=e19e9330bf08490ca8353d76b5e2e658
package hymn.esrichina.displayamapvtpkonline;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.layers.ArcGISVectorTiledLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.Viewpoint;
import com.esri.arcgisruntime.mapping.view.MapView;
public class MainActivity extends AppCompatActivity {
private MapView mainMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
String theOfflineTiledLayers =
"https://www.arcgis.com/home/item.html?
id=e19e9330bf08490ca8353d76b5e2e658";
mainMapView = (MapView) findViewById(R.id.mainMapView);
ArcGISVectorTiledLayer mainArcGISVectorTiledLayer =
new ArcGISVectorTiledLayer(theOfflineTiledLayers);
Basemap mainBasemap
= new Basemap(mainArcGISVectorTiledLayer);
ArcGISMap mainArcGISMap = new ArcGISMap(mainBasemap);
mainMapView.setMap(mainArcGISMap);
Viewpoint vp = new Viewpoint(47.606726,
-122.335564, 72223.819286);
mainArcGISMap.setInitialViewpoint(vp);
}
catch (Exception e)
{
}
}
}
结尾
源程序包含:
DisplayAMapOnlineAndPortal
DisplayAMapArcGISServer
DisplayAMapVTPKOnline
请自行下载:
http://pan.baidu.com/s/1jIDlYyM 密码:6cvh
若失效,可发邮件给韩源萌([email protected])索要。