打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
sencha touch地图:调用google地图示例
 
 
 
 
 
_____________________________________________________________________________
index.html
 
 
 
加这个脚本文件
 
______________________________________________________________________________
app.js
 
 
launch: function() {
  //--------------------------------地图鱼多媒体-----------------------------------------------
  //sencha touch2.0中提供了Map组件,该组件中封装了Google地图API,因此可以直接通过该组件在页面中显示Google地图
  <!--<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true">-->
  
  //在sencha touch 2.0中,通过Ext.Map类定义Map组件,该组件的xtype值为map.
  //在使用map组件时要调用Google地图的API,所以在页面中引入Google地图API所使用的核心JavaScript脚本.
  
  //首先,使用地图组件的setMapCenter()方法,将当前位置设置为地图的中心.接下来使用标记窗口来标记出该地理坐标.
  var refresh=function(geo){
   var mapdemo=Ext.ComponentManager.get('mapdemo');
   var latlng=new google.maps.LatLng(geo.getLatitude(),geo.getLongitude());//获取纵坐标和横坐标,构成一个google.maps.LatLng对象,传递到map中
   mapdemo.setMapCenter(latlng);//将当前位置设置在浏览器的中心
   var infowindow = new google.maps.InfoWindow({//使用标记窗口标记出当前的地理位置
    content:'当前位置'           
   });
   
   marker=new google.maps.Marker({
    position:latlng,
    map:mapdemo.getMap()                
   });
   
   infowindow.open(mapdemo.getMap(),marker);
   google.maps.event.addListener(marker,'click',function(){
    infowindow.open(mapdemo.getMap(),marker);              
                 
   });
  };
  
  //浏览器获取地理位置失败,则显示错误信息
  //有五个参数:
  //geo:代表触发locationerror的Ext.util.Geolocation对象,
  //bTimeout:一个布尔值,为true,代表获取地理位置信息超时,给出超时错误
  //bPermissionDenied:一个布尔值,为true,表示拥护拒绝共享地理位置信息
  //bLocationUnavailable:一个布尔值,为true,表示获取不到地理位置信息
  //message:详细错误信息
  var locationError=function(geo,bTimeout,bPermissionDenied,bLocationUnavailable,message){
   if(bTimeout){//判断是否引发超时错误
    Ext.Msg.alert('获取地图信息超时'); 
   }
   else{
    Ext.Msg.alert('获取地图信息失败'); 
   }
  }
  //使用Map组件显示一幅google地图,地图的中心点为浏览器所在设备的地理坐标,如果浏览器获取地理位置失败,则显示错误信息
  var mapdemo=new Ext.Map({
   id:'mapdemo',
   useCurrentLocation:false,//地图的中心点不设为浏览器的中心位置
   mapOptions:{//使用Map组件的mapOptions设置地图的相关参数
    zoom:12,//将地图放大到12倍
    mapTypeId:google.maps.MapTypeId.ROADMAP,//地图类型为ROADMAP(不使用卫星地图)
    navigationControl:true,
    navigationControlOptions:{
     style:google.maps.NavigationControlStyle.DEFAULT 
    }
   }
  });
  
  //在地图上方显示一份定为图标按钮,当用户单击该按钮时,使用Map组件的getGeo方法获取Ext.util.Geolocation对象,调用该对象的updateLocation()方法,重新获取浏览器所在的地理位置,并且将地图中心移动到浏览器所在手持设备的中心位置
  toolbar=Ext.create('Ext.Toolbar',{
   docked:'top',
   items:[
    {
     iconMask:true,
     iconCls:'locate',
     handler:function(){
      mapdemo.getGeo().updateLocation();//使用getGeo()方法获取Map组件Ext.util.Geolocation对象,调用该对象的updateLocation()方法,重新获取浏览器所在的地理位置
     }
    }
    
    
   ]
  });
  
  panel=Ext.create('Ext.Panel',{
   layout:'fit',
   items:[toolbar,mapdemo]
  });
  
  //Ext.util.Geolocation类的使用
  //Ext.util.Geolocation:用来获取浏览器所在设备的地理位置,该类内部调用HTML5的Geolocation API
  
  //当脚本程序中创建了Ext.util.Geolocation的实例对象以后,该对象立刻开始跟踪浏览器所在设备的地理位置.所获得到的地理位置信息被更新后,触发该对象的locationupdate事件.如果想禁用这个自动跟踪功能,可以将该对象的autoUpdate配置选项设置为false
  var geo=Ext.create('Ext.util.Geolocation',{
   autoUpdate:false,//禁止自动跟踪用户所在的地理位置
   timeout:2000,//设置获取地理位置信息时的超时时间,如果超过该时间尚未获取到用户浏览器所在的地理位置,则抛出超时错误
   listeners:{
    locationupdate:refresh,//浏览器获取地理位置成功时触发该事件,调用refresh()方法
    locationerror:locationError//浏览器获取地理位置失败时触发该事件,显示错误提示
   }
  });
  
  mapdemo.setGeo(geo);
  //创建了Ext.util.Geolocation实例对象后,通过调用该对象的updateLocation方法来手工获取地理位置,当获取地理位置信息失败时,触发locationerror事件.
  //获取地理位置信息失败的原因:1.用户禁止浏览器共享地理位置.2.浏览器不支持html5的geolocation API
  //如果autoUpdate设置为true,可以使用frequency配置选项来设置每个多久自动重新获取浏览器所在的地理位置,单位时毫秒,默认值是10000(毫秒)
  //var geo=Ext.create('Ext.util.Geolocation',{
   //autoUpdate:true,//禁止自动根种用户所在的地理位置
   //timeout:2000,
   //frequency:1800000//每隔半个小时自动重新获取地理位置
   //listeners:{
    //locationupdate:refresh,
    //locationerror:locationError
   //}
  //});
  geo.updateLocation();
  Ext.Viewport.add(panel);
  
    },
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
可以看到你家房子的卫星地图
各省地图
地图:民國時期的中華地圖冊(1)
定位地图
实用地图
古代各国地图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服