• ArcGIS在Android的


    开发硬件条件:
    1. Android系统的手机一台,我用的是4.0
    2. 确定你的手机能够正常定位,因为我自己的手机无法定位,用同事的就可以定位了。

    开发环境搭建:
    Eclipse + ADT + ANDROID-SDK 2.3.3 ( API 10 ) + ARCGIS-ANDROID SDK 10.1.1

    本文将代码分为片段讲解,最后会附上本文代码。
    Java代码 复制代码 收藏代码
    1. textView = new TextView(this);
    2. LinearLayout layout = new LinearLayout(this);
    3. layout.setOrientation(LinearLayout.VERTICAL);
    4. mMapView = new MapView(this);
    5. mMapView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
    6. ArcGISTiledMapServiceLayer tileLayout = new ArcGISTiledMapServiceLayer(super.getString(R.string.map_url));
    7. mMapView.addLayer(tileLayout);
    8. gLayer = new GraphicsLayer();
    9. mMapView.addLayer(gLayer);


    上面的代码往android手机上添加了两个控件,一个文本,一个地图。
    地图的创建也是通过代码形式,如果你是利用xml配置的,需要改为你自己的地图实例。

    要在地图上定位自己的位置,首先需要android手机帮你获取LocationManager

    Java代码 复制代码 收藏代码
    1. //要定位在地图中的位置,需要知道当前位置,而当前位置有Location对象决定,
    2. //但是,Location对象又需要LocationManager对象来创建。
    3. locMag = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);//创建LocationManager的唯一方法

    接着需要获取当前的Location
    Java代码 复制代码 收藏代码
    1. String provider = LocationManager.NETWORK_PROVIDER;
    2. loc = locMag.getLastKnownLocation(provider);
    3. if(loc==null){
    4. provider = LocationManager.NETWORK_PROVIDER;
    5. loc = locMag.getLastKnownLocation(provider);
    6. }


    这里我使用了两个LocationManager.NETWORK_PROVIDER 是因为,我把第一个换成GPS_PROVIDER的时候,我下面的事件无法触发(因为我在房屋内开发)。

    Java代码 复制代码 收藏代码
    1. LocationListener locationListener = new LocationListener(){
    2. @Override
    3. public void onLocationChanged(Location location) {
    4. textView.setText("位置发生变化,新位置: " + location.getLatitude() + " , " + location.getLongitude());
    5. System.out.println("位置发生变化,新位置: " + location.getLatitude() + " , " + location.getLongitude());
    6. //刷新图层
    7. markLocation(location);
    8. }
    9. @Override
    10. public void onProviderDisabled(String arg0) {
    11. }
    12. @Override
    13. public void onProviderEnabled(String arg0) {
    14. }
    15. @Override
    16. public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    17. }
    18. };

    创建了这个监听后,需要让我们的位置管理器来启动这个监听,这样我们才能够实时的获取我们当前的位置,并作出相应的事件处理。
    启用监听

    Java代码 复制代码 收藏代码
    1. locMag.requestLocationUpdates(provider, 100, 0, locationListener);
    2. Location loc = locMag.getLastKnownLocation(provider);
    3. if(loc!=null){
    4. double latitude = loc.getLatitude();
    5. double longitude = loc.getLongitude();
    6. textView.setText(latitude + " , " + longitude);
    7. //开始画图
    8. markLocation(loc);
    9. }

  • 相关阅读:
    vue报错 error: data.push is not a function
    vue elment.style样式修改(第三方组件自生成元素)
    按元素标签查询多个
    按css查询多个元素
    按CSS查询一个元素
    查询单个元素
    JavaScript 查找元素
    Spring 商品分类
    Spring 使用日志
    Spring 使用日期类型
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576104.html
Copyright © 2020-2023  润新知