|
本帖最后由 w1017894741 于 2016-6-30 15:16 编辑
版本: 3.4
百度api版本: 2.0
使用的ak: x5的geolocation demo中提供的ak(自己申请了一个浏览器端的ak也经过测试,问题依然)。
下图为申请的设置:
ak码: YefAEHqBry9DCRwwZuA3Xb875CNGGG9j
0 描述: 安卓正常,ios出错,具体错误请看 1.4
1 问题:
1.1 用navigator.geolocation.getCurrentPosition获取经纬度
1.2 在自定义的amd规范js中引入百度api(有时候正常,有时候报错,可能是我常修改测试的原因:can't find 'BMap'):
- /**
- * 动态创建script标签,引入百度api
- */
- var script = document.createElement("script");
- script.type = "text/javascript";
- script.src = "http://api.map.baidu.com/api?v=2.0&ak=EzfQTH533pbevnhohMX4QZRK";
- document.body.appendChild(script);
复制代码 1.3 gps经纬度转换百度经纬度:
- var longitude = position.coords.longitude;// 经度
- var latitude = position.coords.latitude;// 纬度
- var gpsPoint = new BMap.Point(longitude, latitude);
- // 原始坐标转换为百度坐标(一定要等待地图加载完成之后才能进行)
- var convertor = new BMap.Convertor();
- var pointArr = [];
- pointArr.push(gpsPoint);
- convertor.translate(pointArr,1,5,translateCallback);// 开始转换坐标
- // 坐标转换完之后的回调函数
- function translateCallback(data) {
- var lng = data.points[0].lng;// 转换后的百度经度
- var lat = data.points[0].lat;// 转换后的百度维度
- var newPoint = new BMap.Point(lng , lat );// 生成点
- }
复制代码
1.4 问题出现,值得提的是,Geocoder对象和getLocation方法都可以正常获取到(alert做过测试): ---------------------地址逆解析------------------------
- var geoc = new BMap.Geocoder();// 获取位置对象
- geoc.getLocation(newPoint , function(rs) {// 地址逆解析
- //------------------问题出现-------------------------
- alert(rs); //从这里开始未执行
- var addComp = rs.addressComponents;
- province = addComp.province;
- city = addComp.city;
- section = addComp.district;
- street = addComp.street;// addComp.streetNumber
- location = rs.address;
- alert(location);
- });
复制代码
2 有几个问题想问(本人由于技术和经验不足,无法定位到问题,烦请大神耐心详细指教!):
2.1 x5 demo中的ak是什么版本的,android ak,ios ak,服务端ak 还是 浏览器端的ak?
2.2 是否x5 APP打包成 安卓应用 和 苹果应用后,需要使用相应系统版本的 ak?
2.3 我申请的浏览器端的 ak 有没有问题? 应用名指的是什么?是否需要和打包的app包名保持一致?
2.4 出现这个问题的原因是否是因为不兼容ios?或者是其他什么问题?
2.5 我通过动态创建script标签通过其src引入百度的api的方法是否正确?
2.6 出现我这个问题的原因是否会和 ios的证书 或者 授权什么的有关系? 这块我同事做的,而他只会打包,平时不从事app开发。
2.7 最重要的一个问题: 如何正确的在 amd 规范的 js中引入普通无规范的js 文件?反过来又如何?
3 问题: 为什么模式二打包后把资源部署到服务端后,打开app每次都会下载资源,并且在数据网络下会被阻止更新,这样如果人在外面使用app,并且未连接wifi,就无法更新资源。
4附件为我写的一个公共js,代码全在里面
|
|