基于PhoneGap+JQuery Mobile+ArcGISJavascript API实现

本文介绍了一款地图日记应用,利用PhoneGap调用移动设备的GPS和相机,结合ArcGISJS API在地图上展示日记内容、照片和地理位置。应用实现了地图展示、写日记和日记管理三大功能,包括当前地理位置获取、设备相机使用、日记列表展示、详细信息浏览及编辑删除操作。使用JQueryMobile进行界面设计,并提供了不同平台的打包方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【关键思路】

1)使用PhoneGap来调用移动设备的GPS,相机等设备来获取地利位置和图片、视频等信息;

2)使用ArcGIS JavascriptAPI在地图上显示地理位置和照片,浏览日记内容;

3)使用PhoneGap打包成各个平台上的安装包。

 

【主要功能】

主要实现3个功能:地图展示、写日记和日记管理。

1)写日记

    a)      获得当前的地理坐标;

    b)     获取摄像头,记录日记内容,如日记名称,文字内容,照片。

2)地图展示

    a)      将日记以点的形式标示在地图上;

    b)     触摸日记点显示日记详细信息。

3)日记管理

    a)      以列表的形式显示所有日记;

    b)     点击日记,显示日记的全部信息;

    c)      对日记进行编辑及删除操作。

 

【功能实现】


1、JQueryMobile实现界面设计

由于PhoneGap不提供UI库,所以使用JQueryMobile来设计移动设备的UI。

以下代码是Footbar的UI设计,实现功能切换:

 

    <div data-role="footer"data-id="myfooter"data-position="fixed">

       <div data-role="navbar"data-iconpos="bottom">

           <ul>

              <li><a href="#home"data-icon="grid"data-transition="none"class="ui-btn-active">地图</a></li>

              <li><a href="#new"data-icon="star" data-transition="none">新日记</a></li>

              <li><a href="#travellist"data-icon="gear"data-transition="none">日记列表</a></li>

 

           </ul>

       </div><!-- /navbar -->

 </div>

 

        主界面

 

2、PhoneGap获取地理位置

使用PhoneGap的navigator.geolocation.getCurrentPosition函数来获得当前的地理位置信息。

function getLocation(){

    if(!navigator.geolocation){

       alert("can not use geolocation");

       return;

    }

navigator.geolocation.getCurrentPosition(locSuccess,locFail,{enableHighAccuracy:false});

}

 

成功获得地理位置,执行locSuccess函数

functionlocSuccess(position){

    trNotes.lat=position.coords.latitude;

    trNotes.lng=position.coords.longitude;

}

 

如果获得地理位置失败,执行locFail函数

functionlocFail(error){

    varmsg="Cannot determine location.";

    if(error.code==error.PERMISSION_DENIED)

    {

       msg+="Geolocation is disabled.";

    }

    try{

       navigator.notification.alert(mag,null,"Geolocation");

    }catch(e){

       alert(msg);

    }

}

3、PhoneGap调用设备相机

使用PhoneGap提供的navigator.camera.getPicture函数获得设备的照片或者通过设备的相机来拍摄照片。

function getPhoto(){

  //alert("click getPhoto");

  if(!navigator.camera) {

     alert("camera can not use");

     return;

  }

 

//Camera.DestinationType.FILE_URI表示返回照片的文件路径,如果//Camera.DestinationType.DATA_URL表示返回以base64编码的字符串

 

  navigator.camera.getPicture(onSuccess,onFail,{ quality:50,destinationType:Camera.DestinationType.FILE_URI });

 

拍照成功后,执行onSuccess函数

  functiononSuccess(imageData) {

     //alert("camer successful!!!");

     //alert(imageData);

     varnewnote=$("#newNote");

     varsrc=imageData;

     //var src="data:image/jpeg;base64," +imageData;

     varimg=$("#myPhoto");

     img.attr("src",src);

     img.css("display","block");

     //var img="<imgsrc="+src+"/>";

     //newnote.append(img);

     newnote.listview("refresh");

   

  }

 

  functiononFail(message) {

     alert(' carema Failedbecause: '+message);

  }


调用相机


写日记

 

4、ArcGIS Javascript API实现日记标示

主要用于日记在地图上的展示,将存储的地理位置坐标,日记的标题、内容和照片,构建成ArcGIS Javascript API支持的Graphic,并显示到地图上。

    if(row.latitude){

       varpt=esri.geometry.geographicToWebMercator(newesri.geometry.Point([row.longitude,row.latitude],newesri.SpatialReference({wkid:4326})));

                     varsymbol=newesri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_CIRCLE,12,

                      newesri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,

                          newdojo.Color([210,105,30, 0.5]),8),

                          newdojo.Color([210,105,30,0.9]));

       

                     varattr={"title":title,"content":content,"entered":entered,"updated":updated};

 

                      /*var infoTemplate = new esri.InfoTemplate("Attributes","<b>NOTE Name: </b><b>title</b><br/>content<br><img></img><br>entered");*/

                     varinfoTemplate=newesri.InfoTemplate("日记信息","<b>标题: </b><b>${title}</b><br/><b>内容:</b>${content}<br><img style='height:200px;width:200px;'src="+photo+"></img><br><b>时间: </b>${entered}");

                      varg=newesri.Graphic(pt,symbol,attr,infoTemplate);

                     

                      dojo.connect(g,"onClick",function(evt){

                         alert("graphic click"); 

                         vargraphic=evt.graphic;

//                           if(map.infoWindow.isShowing) {

//                                map.infoWindow.hide();

//                            }

                            

                             map.infoWindow.clearFeatures();

                             map.infoWindow.setFeatures([graphic]);

                             map.infoWindow.show(evt.mapPoint);

                            

                          });

                     

                      map.graphics.add(g);

                  }


在地图上显示


详细信息

5、PhoneGap打包不同平台上的安装包

打包为native App,方法和步骤详见:http://www.phonegap.cn/?page_id=442

在IOS模拟器中的系统截图:


系统主界面

 

地图显示


日记列表


日记信息-编辑-删除


【源码下载地址】

iOS版:http://download.csdn.net/detail/arcgis_mobile/4209747

Android版:http://download.csdn.net/detail/arcgis_mobile/4209754


<think>好的,用户想在CentOS 7上通过图形化界面安装和配置KVM。我需要先回顾之前提供的引用内容,看看有哪些步骤已经覆盖了,然后整理出一个清晰的流程。 首先,引用1提到需要安装kvm的基本组件,包括qemu-kvm、virt-install、libvirt等,还有图形界面工具virt-manager。引用2和3也提到了类似的安装步骤,以及启动libvirtd服务。用户希望使用图形化界面,所以virt-manager的安装是关键。 接下来,我需要确保步骤正确且完整。首先检查硬件虚拟化支持,用户可能需要知道如何验证CPU是否支持虚拟化,比如通过egrep命令或者BIOS设置。然后安装必要的软件包,这里需要整合引用中的不同安装命令,可能合并成一个更简洁的步骤。启动服务部分,引用2提到了启动libvirtd并设置开机启动,这部分必须包含。 网络配置方面,默认的NAT可能不够,用户可能需要桥接网络,但引用中没有详细说明,可能需要补充基本步骤或者建议参考其他资料。存储池配置在图形界面中操作,virt-manager的路径可能需要指明,比如在应用程序菜单里找到。 安装虚拟机部分,用户使用virt-manager,所以步骤应该详细说明如何通过图形向导操作,比如选择ISO镜像、分配资源等。最后验证安装是否成功,通过命令行或者再次打开virt-manager查看虚拟机状态。 还要考虑用户可能的疑问,比如安装过程中出现依赖问题,或者服务启动失败的情况,可能需要提示他们检查日志或确保软件源配置正确。此外,是否需要配置SELinux或防火墙规则?引用中没有提到,但可能在实际操作中会遇到,可能需要提醒用户注意。 最后,生成的相关问题要围绕KVM的图形化安装、配置管理、网络设置和常见问题处理,这样用户如果有进一步的问题可以自行参考。</think>### 在 CentOS 7 上通过图形化界面安装与配置 KVM 的步骤 #### 1. 检查硬件虚拟化支持 确保 CPU 支持虚拟化技术,执行以下命令验证: ```bash egrep -c '(vmx|svm)' /proc/cpuinfo # 输出大于0表示支持 ``` 若未启用,需在 BIOS 中开启虚拟化选项。 #### 2. 安装 KVM 组件及图形化管理工具 通过 YUM 安装必要软件包(整合引用[1][3]): ```bash yum -y install qemu-kvm qemu-img virt-install libvirt virt-manager bridge-utils ``` - **qemu-kvm**: KVM 核心模块 - **virt-manager**: 图形化管理工具 - **libvirt**: 虚拟机管理服务 #### 3. 启动并配置 libvirtd 服务 ```bash systemctl start libvirtd # 启动服务 systemctl enable libvirtd # 设置开机自启[^2] ``` #### 4. 配置网络(可选) 默认使用 NAT 网络。如需桥接网络,可创建桥接接口 `br0`(需手动编辑网络配置文件,例如 `/etc/sysconfig/network-scripts/ifcfg-br0`)。 #### 5. 使用图形化工具 virt-manager 1. 打开终端输入 `virt-manager` 或通过应用程序菜单启动。 2. **创建存储池**(默认路径为 `/var/lib/libvirt/images`): - 在 virt-manager 界面中:`Edit > Connection Details > Storage`,添加或修改存储池。 3. **新建虚拟机**: - 点击左上角“新建虚拟机”图标。 - 选择本地 ISO 镜像文件(如 CentOS 镜像)。 - 分配 CPU、内存及磁盘空间(建议至少 20GB 磁盘)。 - 完成向导后启动虚拟机安装操作系统[^3]。 #### 6. 验证安装 - 命令行查看虚拟机列表: ```bash virsh list --all ``` - 在 virt-manager 界面中确认虚拟机状态。 --- ### 常见问题及注意事项 1. **依赖问题**:若安装失败,检查 YUM 源配置并更新(`yum update`)。 2. **权限问题**:确保当前用户属于 `kvm` 和 `libvirt` 用户组。 3. **图形界面卡顿**:建议在本地桌面环境或通过 VNC 连接操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值