开发硬件条件:
1. Android系统的手机一台,我用的是4.0
2. 确定你的手机能够正常定位,因为我自己的手机无法定位,用同事的就可以定位了。
开发环境搭建:
Eclipse + ADT + ANDROID-SDK 2.3.3 ( API 10 ) + ARCGIS-ANDROID SDK 10.1.1
本文将代码分为片段讲解,最后会附上本文代码。
textView = new TextView(this);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
mMapView = new MapView(this);
mMapView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
ArcGISTiledMapServiceLayer tileLayout = new ArcGISTiledMapServiceLayer(super.getString(R.string.map_url));
mMapView.addLayer(tileLayout);
gLayer = new GraphicsLayer();
mMapView.addLayer(gLayer);
上面的代码往android手机上添加了两个控件,一个文本,一个地图。
地图的创建也是通过代码形式,如果你是利用xml配置的,需要改为你自己的地图实例。
要在地图上定位自己的位置,首先需要android手机帮你获取LocationManager
//要定位在地图中的位置,需要知道当前位置,而当前位置有Location对象决定,
//但是,Location对象又需要LocationManager对象来创建。
locMag = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);//创建LocationManager的唯一方法
接着需要获取当前的Location
String provider = LocationManager.NETWORK_PROVIDER;
loc = locMag.getLastKnownLocation(provider);
if(loc==null){
provider = LocationManager.NETWORK_PROVIDER;
loc = locMag.getLastKnownLocation(provider);
}
这里我使用了两个LocationManager.NETWORK_PROVIDER 是因为,我把第一个换成GPS_PROVIDER的时候,我下面的事件无法触发(因为我在房屋内开发)。
LocationListener locationListener = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
textView.setText("位置发生变化,新位置: " + location.getLatitude() + " , " + location.getLongitude());
System.out.println("位置发生变化,新位置: " + location.getLatitude() + " , " + location.getLongitude());
//刷新图层
markLocation(location);
}
@Override
public void onProviderDisabled(String arg0) {
}
@Override
public void onProviderEnabled(String arg0) {
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
};
创建了这个监听后,需要让我们的位置管理器来启动这个监听,这样我们才能够实时的获取我们当前的位置,并作出相应的事件处理。
启用监听
locMag.requestLocationUpdates(provider, 100, 0, locationListener);
Location loc = locMag.getLastKnownLocation(provider);
if(loc!=null){
double latitude = loc.getLatitude();
double longitude = loc.getLongitude();
textView.setText(latitude + " , " + longitude);
//开始画图
markLocation(loc);
}
上面的这段代码会试着在图层上面绘制出当前的位置。
private void markLocation(Location location){
double locx = location.getLongitude();
double locy = location.getLatitude();
gLayer.removeAll();
Point wgspoint = new Point(locx, locy);
Point mapPoint = (Point) GeometryEngine.project(wgspoint,SpatialReference.create(4326),mMapView.getSpatialReference());
//图层的创建
Graphic graphic = new Graphic(mapPoint,new SimpleMarkerSymbol(Color.RED,25,STYLE.CIRCLE));
gLayer.addGraphic(graphic);
}
上面的markLocation就是标记当前位置的代码。注意,GeometryEngine.project
这个方法是将经纬度投影到我们屏幕上地图的坐标位置。具体的API还没完全看明白,而这样定位到的地点也会有一小段距离的偏差,具体如何矫正可能要联系地图的服务商。
一个由于项目需要接触android的人——忆梦竹 写于2013/1/30
分享到:
相关推荐
ArcGIS Android SDK允许开发者在Android应用中集成地图功能,进行地理信息的展示和处理。它可以用来创建交互式地图,支持各种地图服务,包括瓦片地图、矢量地图、地形图等。此外,它还提供了丰富的API,可以实现定位...
在压缩包中,`AndroidMap.apk`是ArcGIS for Android应用的安装文件,用户可以将其安装到Android设备上运行。`安装说明.txt`文件通常包含了安装和配置应用的步骤及注意事项,确保正确使用和避免遇到问题。`SysFile`...
ArcGIS Android SDK是Esri公司为开发者提供的一个强大的地理信息系统开发工具,允许开发者在Android平台上构建功能丰富的地图应用。这个SDK包含了从v10.2.9到v100.x的不同版本,每个版本都有其独特的特性和改进,为...
然而,在使用 ArcGIS for Android 时,开发者可能会遇到水印问题。水印是指在应用程序中显示的水印信息,通常是用于标识应用程序的身份或版权信息。在某些情况下,开发者可能需要去除水印,以便更好地展示应用程序的...
ArcGIS for Android 是 Esri 公司开发的一款强大的地理信息系统(GIS)开发框架,它允许开发者在 Android 平台上构建具有地图展示、地理分析、数据管理等功能的应用程序。本文将详细介绍如何利用 ArcGIS for Android...
在开发ArcGIS for Android应用时,jar包是不可或缺的组成部分。jar(Java Archive)文件是Java类库的打包格式,包含了类文件、资源文件以及相关的元数据。在"arcgis-android-sdk-10.2.6-2"这个压缩包中,包含了...
- **创建SQLite数据库**:首先,你需要在Android应用中创建SQLite数据库,这通常通过扩展SQLiteOpenHelper类来实现,包括onCreate()和onUpgrade()方法。 - **定义表结构**:在数据库中创建表,定义列名和数据类型...
开发ArcGIS for Android应用首先需要集成Esri的Android SDK。这通常通过在项目构建路径中添加SDK的依赖库来实现。在Android Studio中,可以在build.gradle文件中添加对应的依赖项。 3. **创建地图实例** "Hello...
一个典型的ArcGIS for Android应用可能包括以下功能: - 显示在线地图服务,如Esri的世界影像地图。 - 添加自定义图层,比如加载本地的Shapefile数据。 - 搜索地址并显示在地图上。 - 定位用户当前的位置。 - 绘制...
总之,"ArcGIS for Android 100.4.0示例完整源码_AS3.3.2" 提供了一个全面了解和学习 ArcGIS for Android 开发的平台,结合Android Studio 3.3.2的强大功能,开发者可以高效地创建具有丰富GIS功能的Android应用程序...
ArcGIS API for Android是ArcGIS for Android的核心,它提供了一系列Java接口和类,用于在Android应用中创建地图、添加图层、处理地理数据等。通过这个API,开发者可以轻松地实现地图的动态加载、缩放、平移、图层...
ArcGIS for Android 是Esri公司推出的一款强大的地图开发工具,它允许开发者在Android平台上构建具有地图功能的应用程序。版本100.5提供了最新的特性和优化,旨在提升地图渲染、地理处理和定位服务的性能。这个示例...
它允许开发者在Android应用中集成交互式地图,展示矢量图层、卫星图像、地形图等多样的地理信息。同时,通过集成ArcGIS服务,开发者可以访问云中的地理数据,实现远程数据的实时同步和更新。 1. **地图展示与操作**...
ArcGIS for Android 是 Esri 公司提供的一款强大的地理信息系统 (GIS) 开发框架,它允许开发者在 Android 平台上构建地图应用,集成空间分析和数据管理功能。此示例源码为 100.4.0 版本,是 ArcGIS for Android 的一...
《ArcGIS Android SDK v10.2.7:构建移动GIS应用的利器》 ArcGIS Android SDK v10.2.7是一款专为Android平台设计的地理信息系统(GIS)开发工具包,它允许开发者创建功能丰富的地图应用程序,将地理信息与移动设备...
【ArcGIS For Android Location Demo】是一个...通过深入学习和实践ArcGIS For Android Location Demo,开发者不仅可以掌握如何在Android应用中实现地理定位,还能了解到如何结合ArcGIS SDK构建功能丰富的地图应用。
这个简单的示例旨在展示如何在Android应用中加载并显示一张地图,它是理解ArcGIS for Android核心功能的第一步。 首先,我们需要创建一个新的Android项目,并在项目中引入ArcGIS的SDK依赖。在build.gradle文件中...
在Android开发中,ArcGIS(ArcGIS Runtime SDK for Android)是一个强大的地理信息系统,它提供了丰富的地图展示、地理分析和定位功能。本篇文章将详细讲解如何使用ArcGIS for Android实现地图的定位以及放大缩小...
ArcGIS Android SDK v10.2.3是一款专为Android平台设计的开发工具库,它为开发者提供了强大的地理信息系统(Geographic Information System, GIS)功能,帮助用户在Android设备上构建具有地图显示、地理分析、数据...