起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 40966|回复: 67

[分享] 利用WeX5集成百度地图

  [复制链接]

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2016-5-14 20:43:15 | 显示全部楼层 |阅读模式
本帖最后由 Masion 于 2016-5-14 20:59 编辑

最近做一个地图类的app
经过几天的摸索,终于完成百度地图集成的界面
先看效果:
1、加载完成之后,页面加载制定位置的地图
捕获.PNG

评分

参与人数 1威望 +15 收起 理由
wgs7909 + 15 很给力!

查看全部评分

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:45:25 | 显示全部楼层
2、顶部能够输入地图的关键字,地图显示符合条件的下拉列表

捕获.PNG




长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:48:14 | 显示全部楼层
3、用户选择了相应的选项后,地图会移动到对应的地图范围,同时标题栏显示对应位置信息
捕获.PNG

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:50:28 | 显示全部楼层
4、当用户点击地图其他位置时,标识点移动到对应位置,标题栏的位置信息相应改变
5、当用户点击确认按钮时,用alert将当前标识点的地理信息alert出来

捕获.PNG

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:51:44 | 显示全部楼层
相应的代码贴在下面
只需要把对应的代码片段复制到相应的.w,.js..css中,右键浏览器运行就可以实地看到效果了
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:52:04 | 显示全部楼层
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <div xmlns="http://www.w3.org/1999/xhtml" component="$UI/system/components/justep/window/window" design="device:m;"
  3.   xid="window" class="window">  
  4.   <div component="$UI/system/components/justep/model/model" xid="model" style="left:18px;top:83px;height:244px;"
  5.     onLoad="modelLoad">
  6.     <div component="$UI/system/components/justep/data/data" autoLoad="true"
  7.       xid="statusData" autoNew="false" idColumn="editStatus">
  8.       <column label="编辑状态" name="editStatus" type="String" xid="xid1"></column>
  9.   <data xid="default1">[{&quot;editStatus&quot;:&quot;编辑&quot;}]</data>
  10.   <column label="当前维度" name="curLng" type="String" xid="xid2"></column>
  11.   <column label="当前经度" name="curLat" type="String" xid="xid3"></column>
  12.   <column label="省份" name="province" type="String" xid="xid4"></column>
  13.   <column label="城市" name="city" type="String" xid="xid5"></column>
  14.   <column label="县区" name="district" type="String" xid="xid6"></column>
  15.   <column label="镇级街道" name="street" type="String" xid="xid7"></column>
  16.   <column label="街道号" name="streetNumber" type="String" xid="xid8"></column>
  17.   <column label="商业名称" name="business" type="String" xid="xid9"></column>
  18.   <column label="地址" name="address" type="String" xid="xid10"></column></div>
  19.   </div>  
  20.   <script type="text/javascript" src="http://api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js"/>  
  21.   <div component="$UI/system/components/justep/panel/panel" class="x-panel x-full"
  22.     xid="panel1">
  23.     <div class="x-panel-top" xid="top1">
  24.       <div component="$UI/system/components/justep/titleBar/titleBar" class="x-titlebar tb-index"
  25.         xid="titleBar1">
  26.         <div class="x-titlebar-left" xid="div1">
  27.           <a component="$UI/system/components/justep/button/button" class="btn btn-link btn-only-icon"
  28.             label="搜索" xid="button6" icon="icon-chevron-left" onClick="{operation:'window.close'}">
  29.             <i xid="i6" class="icon-chevron-left"/>  
  30.             <span xid="span6">搜索</span>
  31.           </a>
  32.         </div>  
  33.         <div class="x-titlebar-title" xid="div2" bind-click="div2Click">
  34.           <div class="form-group has-feedback" xid="formGroup1">
  35.             <div xid="div403" style="display:none;" bind-visible=" $model.statusData.val(&quot;editStatus&quot;)  !='编辑'" bind-text=' $model.statusData.val("address")'>
  36.               
  37.             </div>  
  38.             <input component="$UI/system/components/justep/input/input" class="form-control input-sm text-white"
  39.                 id="suggestId" placeHolder="输入搜索" bind-visible=" $model.statusData.val(&quot;editStatus&quot;)=='编辑'"/>
  40.               <div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"/>
  41.             <!-- <i class="icon-ios7-search-strong form-control-feedback" xid="iSearch"/>  -->
  42.           </div>
  43.         </div>  
  44.         <div class="x-titlebar-right reverse" xid="div3">
  45.           <a component="$UI/system/components/justep/button/button" class="btn x-yellow btn-only-label more"
  46.             label="确定" xid="searchBtn" onClick="searchBtnClick" bind-enable=' $model.statusData.val("curLng")'>
  47.             <i xid="i11"/>  
  48.             <span xid="span10">确定</span>
  49.           </a>
  50.         </div>
  51.       </div>
  52.     </div>  
  53.     <div xid="baiduMap" class="x-panel-content"/>
  54.   </div>
  55. </div>
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:52:46 | 显示全部楼层
  1. define(function(require){
  2.         var $ = require("jquery");
  3.         var justep = require("$UI/system/lib/justep");
  4.         var map;
  5.         var Model = function(){
  6.                 this.callParent();
  7.         };


  8.         Model.prototype.modelLoad = function(event){
  9.                
  10.                 var id = this.getIDByXID("baiduMap");
  11.                 var self = this;
  12.                 var data=this.comp("statusData");
  13.                 window._baiduInit = function() {
  14.                          map = new BMap.Map(id,{minZoom:2,enableMapClick:false});                //创建地图对象,可以设置地图缩放最大最小级别,设置是否显示POI点击
  15.                         var geoc = new BMap.Geocoder();   
  16.                        
  17.                         //map.centerAndZoom("长春",11);                                                                        //以城市名称为参数设置地图
  18.                         map.centerAndZoom(new BMap.Point(125.276579, 43.852057), 13);        //以坐标点为中心设置地图
  19.                         //map.addControl(new BMap.MapTypeControl());                                                //添加地图显示类型控件(地图,卫星图,和3D模型显示)
  20.                         //map.disableDragging();                                                                                 //设置地图禁止拖动
  21.                        
  22.                         map.enableScrollWheelZoom(true);                                                                 //设置允许鼠标滚轮缩放地图
  23.                         map.enableContinuousZoom();                                                                                //设置连续缩放
  24.                        
  25.                        
  26.                         var pointA = new BMap.Point(125.310364,43.873797);                          // 创建点坐标A
  27.                         var pointB = new BMap.Point(125.367928,43.857159);                          // 创建点坐标B
  28.                         var pointC = new BMap.Point(125.319132,43.830163);                                 // 创建坐标C
  29.                        
  30.                         //alert('从A点到B点的距离是:'+(map.getDistance(pointA,pointB)).toFixed(2)+' 米。');  //获取两点距离,保留小数点后两位
  31.                
  32.                
  33.                         //在地图上添加折线
  34.                 /*        var polyline = new BMap.Polyline([pointA,pointB,pointC], {strokeColor:"red", strokeWeight:4, strokeOpacity:0.5});  //定义折线
  35.                         map.addOverlay(polyline);                                                                             //添加折线到地图上
  36.                         */
  37.        
  38.                 /*        var bs = map.getBounds();                                                                           //获取可视区域
  39.                         var bssw = bs.getSouthWest();                                                                           //拿到可视区域左下角
  40.                         var bsne = bs.getNorthEast();                                                                   //拿到可视区域右上角
  41.                         alert("当前地图可视范围是:" + bssw.lng + "," + bssw.lat + "到" + bsne.lng + "," + bsne.lat);
  42.                 */
  43.                                        
  44.                                                
  45.                 /*        setTimeout(function(){
  46.                                 map.panTo(new BMap.Point(113.262232,23.154345));                           //两秒后移动到广州
  47.                         }, 2000);
  48.                                 */
  49.                        
  50.                         //设置地图显示范围,如果用户在平移地图超过设置区域,会弹回设置区域
  51.                 /*        var b = new BMap.Bounds(new BMap.Point(125.147942, 43.964754),new BMap.Point(125.550382, 43.806325));
  52.                         try {       
  53.                                 BMapLib.AreaRestriction.setBounds(map, b);
  54.                         } catch (e) {
  55.                                 alert(e);
  56.                         }
  57.                         */       



  58.                 /*        var bottom_right_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT});// 右下角,添加比例尺
  59.                         map.addControl(bottom_right_control);
  60.                         */
  61.                        
  62.                        
  63.                         //右上角,添加默认缩放平移控件
  64.                         /*var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL});
  65.                         //BMAP_NAVIGATION_CONTROL_SMALL:仅包含平移和缩放按钮;BMAP_NAVIGATION_CONTROL_PAN:仅包含平移按钮;BMAP_NAVIGATION_CONTROL_ZOOM:仅包含缩放按钮
  66.                         map.addControl(top_right_navigation);
  67.                         */
  68.                                
  69.                          // 添加定位控件
  70.                 /*                 var geolocationControl = new BMap.GeolocationControl();
  71.                           geolocationControl.addEventListener("locationSuccess", function(e){
  72.                                     // 定位成功事件
  73.                                     var address = '';
  74.                                     address += e.addressComponent.province;
  75.                                     address += e.addressComponent.city;
  76.                                     address += e.addressComponent.district;
  77.                                     address += e.addressComponent.street;
  78.                                     address += e.addressComponent.streetNumber;
  79.                                     self.comp("tittle1").set({"title":address});
  80.                           });
  81.                           geolocationControl.addEventListener("locationError",function(e){
  82.                                     // 定位失败事件
  83.                                     alert(e.message);
  84.                           });
  85.                           map.addControl(geolocationControl);
  86.                         */
  87.                                
  88.                                
  89.                                 //添加城市列表
  90.                         /*        var size = new BMap.Size(10, 20);                        //定义控件偏移量
  91.                                 map.addControl(new BMap.CityListControl({
  92.                                     anchor: BMAP_ANCHOR_TOP_LEFT,
  93.                                     offset: size,
  94.                                     // 切换城市之间事件
  95.                                      onChangeBefore: function(){
  96.                                         alert('城市切换之前事件');
  97.                                      },
  98.                                     // 切换城市之后事件
  99.                                      onChangeAfter:function(){
  100.                                        alert('城市切换之后事件');
  101.                                      }
  102.                                 }));
  103.                                 */


  104.                         /*        map.addEventListener("click",function(e){                        //增加鼠标点击事件
  105.                                         //alert(e.point.lng + "," + e.point.lat);
  106.                                 });
  107.                                 */
  108.                                
  109.                                 //在地图两点上生成一条路线规划
  110.                         /*        var myP1 = new BMap.Point(125.283837,43.815675);    //起点
  111.                                 var myP2 = new BMap.Point(125.352396,43.869804);    //终点
  112.                                   var driving2 = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}});    //驾车实例
  113.                                   driving2.search(myP1, myP2);    //显示一条公交线路
  114.                           */
  115.                           

  116.                         map.addEventListener("click",function(e){                        //增加鼠标点击事件
  117.                                 map.clearOverlays();
  118.                                 map.addOverlay(new BMap.Marker(new BMap.Point(e.point.lng, e.point.lat)));           //增加点
  119.                                
  120.                                 geoc.getLocation(e.point, function(rs){
  121.                                         var addComp = rs.addressComponents;
  122.                                        
  123.                                                 data.setValue("curLng",rs.point.lng);
  124.                                                 data.setValue("curLat",rs.point.lat);
  125.                                                 data.setValue("province",addComp.province);
  126.                                                 data.setValue("city",addComp.city);
  127.                                                
  128.                                                 data.setValue("district",addComp.district);
  129.                                                 data.setValue("street",addComp.street);
  130.                                                 data.setValue("streetNumber",addComp.streetNumber);
  131.                                                 data.setValue("business",rs.business);
  132.                                                 data.setValue("address",rs.address);
  133.                                         //G("div403").innerHTML = addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber;
  134.                                        
  135.                                         self.comp("statusData").setValue("editStatus","查看");
  136.                                 });
  137.                                
  138.                         });
  139.                                
  140.                         function G(id) {
  141.                                 return document.getElementById(id);
  142.                         }

  143.                         var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
  144.                                 {"input" : "suggestId",
  145.                                 "location" : map
  146.                         });
  147.                
  148.                
  149.                 /*        ac.addEventListener("onhighlight", function(e) {  //鼠标放在下拉列表上的事件
  150.                         var str = "";
  151.                                 var _value = e.fromitem.value;
  152.                                 var value = "";
  153.                                 if (e.fromitem.index > -1) {
  154.                                         value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
  155.                                 }   
  156.                                 str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
  157.                                
  158.                                 value = "";
  159.                                 if (e.toitem.index > -1) {
  160.                                         _value = e.toitem.value;
  161.                                         value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
  162.                                 }   
  163.                                 str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
  164.                                 G("searchResultPanel").innerHTML = str;
  165.                         });*/
  166.                
  167.                         var myValue;
  168.                         ac.addEventListener("onconfirm", function(e) {    //鼠标点击下拉列表后的事件
  169.                         var _value = e.item.value;
  170.                                 myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
  171.                                 G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
  172.                                
  173.                                 setPlace();
  174.                                
  175.                         });
  176.                
  177.                         function setPlace(){
  178.                                 map.clearOverlays();    //清除地图上所有覆盖物
  179.                                 function myFun(){
  180.                                         var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果
  181.                                         map.centerAndZoom(pp, 18);
  182.                                         map.addOverlay(new BMap.Marker(pp));    //添加标注
  183.                                        
  184.                                         geoc.getLocation(pp, function(rs){
  185.                                                 var addComp = rs.addressComponents;
  186.                        
  187.                                                 data.setValue("curLng",rs.point.lng);
  188.                                                 data.setValue("curLat",rs.point.lat);
  189.                                                 data.setValue("province",addComp.province);
  190.                                                 data.setValue("city",addComp.city);
  191.                                                 data.setValue("district",addComp.district);
  192.                                                 data.setValue("street",addComp.street);
  193.                                                 data.setValue("streetNumber",addComp.streetNumber);
  194.                                                 data.setValue("business",rs.business);
  195.                                                 data.setValue("address",rs.address);
  196.                                                
  197.                                                 //G("div403").innerHTML = addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber;
  198.                                         });
  199.                                         self.comp("statusData").setValue("editStatus","查看");
  200.                                 }
  201.                                
  202.                                 var local = new BMap.LocalSearch(map, { //智能搜索
  203.                                   onSearchComplete: myFun
  204.                                 });
  205.                                 local.search(myValue);
  206.                                  
  207.                                 }
  208.                                
  209.                         }
  210.                         require([ 'http://api.map.baidu.com/api?v=2.0&ak=o9pzum8sF8s3wqodZnt9S5OsKlLdjOil&callback=_baiduInit' ], function() {
  211.                                 if (window.BMap && window.BMap.Map) {
  212.                                         window._baiduInit();       
  213.                                 }
  214.                         });
  215.         };

  216.         Model.prototype.searchBtnClick = function(event){
  217.                 var data=this.comp("statusData");
  218.                 alert("当前位置经度: "+data.val("curLng")+"\r当前位置维度:"+data.val("curLat")+"\r当前位置省份:"+data.val("province")+"\r当前位置城市:"+data.val("city")+"\r当前位置县区:"+data.val("district")+"\r当前位置镇级街道:"+data.val("street")+"\r当前位置街道号:"+data.val("streetNumber")+"\r当前位置商业机构:"+data.val("business")+"\r当前位置地址:"+data.val("address"));
  219.         };

  220.        

  221.         Model.prototype.div2Click = function(event){
  222.                 this.comp("statusData").setValue("editStatus","编辑");
  223.         };

  224.        

  225.         return Model;
  226. });
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2016-5-14 20:53:03 | 显示全部楼层
  1. /*顶部titlebar**/
  2. .x-titlebar{ background-color:#ff4400;}
  3. .tb-index.x-titlebar .x-titlebar-title{ padding:10px 0;}
  4. .tb-index.x-titlebar .form-group input{ font-size:16px; background-color:#ff4400; border-top:0; border-left:0; border-right:0;}
  5. .tb-index.x-titlebar .form-group input:focus{ box-shadow:none;}

  6. .btn-group{ border-top:1px solid #e7e7e7; border-bottom:1px solid #e7e7e7;}
  7. .btn-group .btn{ border-left:1px solid #e7e7e7;}

  8. .text-black{ color:#555;}
  9. .text-white{ color:#fff;}

  10. .x-list li{ padding:10px; border-bottom:1px solid #e7e7e7;}
  11. .x-list li i{ margin-top:10px;} */

  12. .tb-clearBtn.btn-default{ border-color:#ff4400; background-color:#fff; color:#ff4400; padding:4px 20px;}
  13. .tb-title{ padding:10px; border-bottom:1px solid #e7e7e7;}
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

56

主题

370

帖子

963

积分

高级会员

Rank: 4

积分
963
QQ
发表于 2016-5-14 21:28:04 | 显示全部楼层
顶,楼主威武!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

76

积分

初级会员

Rank: 2

积分
76
QQ
发表于 2016-5-14 22:29:40 | 显示全部楼层
,厉害啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 21:16 , Processed in 0.096801 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表