zoukankan      html  css  js  c++  java
  • arcgis android 通过getExtent得到当前地图范围四个点的坐标

    困扰了我很久的问题终于要得到解决了,先欢喜一下。
    我的目的是想做一个当程序完全退出后,再次打开程序地图直接显示上次程序退出前地图的范围。arcgis for android官方软件就有这个功能。网上搜索了一些关于activity保存状态的方法,但是这些方法只能保存非销毁后的Activity,即当程序完全退出后,采用这种方法程序是不能保存Activity状态的。所以想着用数据库保存状态的方法。
    我的方法是初始化的时候去读取数据库,如果里面有Extent的记录,则加载这条记录作为iniExtent的值,如果没有则插入一条记录初始化,以后程序退出前,获取当前的extent,将这个矩形的左下角及右上角两个点坐标更新到数据库有,以便下次程序启动时调用。
    动态设置地图初始范围不难,直接用map.setExtentEnvelope envelope);方法就可以了。但是要获取地图范围的那两个点坐标,花了点我的时间,开始以为直接用map.getExtent()方法就Ok,但是仔细一看,这个方法返回一个polygon对象,而不是setExtent()方法里所需要的Envelope参数类型,一想,肯定需要转换,但查官方API文档,硬是没有,时间都花这里了。后来看到一编文章,http://blog.csdn.net/wozaifeiyang0/article/details/7327729,这编文章给我我启发,感谢这位兄台。是的,用map.getExtent().queryEnvelope(envelope);这个方法得到了我想要的结果。

    代码奉上

    [html] view plain copy
     
     print?
    1. Envelope rExtent=new Envelope();  
    2. map.getExtent().queryEnvelope(rExtent);  
    3. leftB_x=rExtent.getXMin();  
    4. leftB_y=rExtent.getYMin();  
    5. topR_x=rExtent.getXMax();  
    6. topR_y=rExtent.getYMax();  

    这样,是不是得到了那两个点的坐标呢,原来很简单,只是官方文档不给力啊

  • 相关阅读:
    在Centos7下源代码安装配置Nginx
    mysql5.7.21源码安装
    数据库设计三大范式
    电商项目中使用Redis实现秒杀功能
    PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
    PHP面向对象(抽象类与抽象方法、接口的实现)
    php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
    利用VHD虚拟文件加密自己的个人信息
    Chrome常用快捷键
    stl本子
  • 原文地址:https://www.cnblogs.com/wangfeng520/p/5363279.html
Copyright © 2011-2022 走看看