8***@qq.com
8***@qq.com
  • 发布:2018-05-31 10:22
  • 更新:2021-03-16 19:54
  • 阅读:3113

支付开发,高德地图,下拉刷新,申请打包证书

分类:HBuilder

从菜鸟到新手,遇见问题解决问题是家常便饭,今天记录一下遇到的一些问题,希望能对同样被困扰过的同学的一些帮助。
一、修改状态栏背景色,在入口页面加这句代码
plus.navigator.setStatusBarBackground('#000'); //修改状态栏背景色
二、申请私有安卓打包证书
1.下载dcloud公有证书http://download.dcloud.net.cn/HBuilder.keystore
参考这篇文章http://ask.dcloud.net.cn/article/12718
2.使用第三方软件uploader,可以快速申请
三.调用微信和支付宝功能
1.先在demo里找到beecloud.html,把页面做出来
2.去蚂蚁金服和微信开放平台注册开发者账号,并进行开发者资质认证,然后在各自平台创建APP应用,进行各自开发配置,比如回调地址,可以得到返回的订单信息。然后你还要去beecloud官网去注册企业账号,注册完了之后创建支付应用,这里会得到一个APP ID,这个APP ID是需要在hbuilder填写的,然后在这个支付应用里进行交易渠道参数设置,支付宝APP支付和微信APP支付都需要配置,填写的信息就来自你之前在各自开放平台创建的应用。缺少什么就申请什么,比如收款商户。Beecloud的东西都配置好了,支付功能就可以使用了,注意一下,微信支付只有打包之后才行,真机运行会报错。
3.以上的账号申请和各种配置,比较繁琐,但是都有教程,不要急躁,按步骤一步步来,把重要信息保存好。建议在做支付功能之前就开始申请注册,全程需要半个月的审核时间。
四、高德地图定位不准确
细心的同学会发现,在APP开发的时候调用高德地图api进行定位时,会有几百米的偏差,相当蛋疼。查阅资料之后发现是坐标系的问题,需要自己加一个纠偏算法。这里我详细的说一下怎么用。

这是纠偏之前的代码,使用浏览器定位
map = new AMap.Map('container', {
resizeEnable: true
});
//获取定位
map.plugin('AMap.Geolocation', function() {
geolocation = new AMap.Geolocation({
enableHighAccuracy: true,//是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
buttonPosition:'RB'
});
map.addControl(geolocation);
geolocation.getCurrentPosition();
AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息
});

然后开始纠偏,首先把下面代码复制进来,放在获取定位之前

//纠偏算法  
                        var a = 6378245.0;  
                        var ee = 0.00669342162296594323;  
                        var lnglat = new Array(2);  

                        function transform(wgLon, wgLat) {  
                            console.log(Math.PI);  
                            if(outOfChina(wgLat, wgLon)) {  
                                console.log("outOfChina");  
                                lnglat[0] = wgLon;  
                                lnglat[1] = wgLat;  
                                console.log(lnglat[0] + "|" + lnglat[1]);  
                                return lnglat;  
                            }  
                            var dLat = transformLat(wgLon - 105.0, wgLat - 35.0);  
                            var dLon = transformLon(wgLon - 105.0, wgLat - 35.0);  
                            var radLat = wgLat / 180.0 * Math.PI;  
                            var magic = Math.sin(radLat);  
                            magic = 1 - ee * magic * magic;  
                            var sqrtMagic = Math.sqrt(magic);  
                            dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * Math.PI);  
                            dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * Math.PI);  
                            lnglat[0] = wgLon + dLon;  
                            lnglat[1] = wgLat + dLat;  
                            console.log(lnglat[0] + "|" + lnglat[1] + "|" + dLon + "|" + dLat);  
                            return lnglat;  
                        }  

                        function outOfChina(lat, lon) {  
                            if(lon < 72.004 || lon > 137.8347)  
                                return true;  
                            if(lat < 0.8293 || lat > 55.8271)  
                                return true;  
                            return false;  
                        }  
                        function transformLat(x, y) {  
                            ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));  
                            ret += (20.0 * Math.sin(6.0 * x * Math.PI) + 20.0 * Math.sin(2.0 * x * Math.PI)) * 2.0 / 3.0;  
                            ret += (20.0 * Math.sin(y * Math.PI) + 40.0 * Math.sin(y / 3.0 * Math.PI)) * 2.0 / 3.0;  
                            ret += (160.0 * Math.sin(y / 12.0 * Math.PI) + 320 * Math.sin(y * Math.PI / 30.0)) * 2.0 / 3.0;  
                            return ret;  
                        }  

                        function transformLon(x, y) {  
                            ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));  
                            ret += (20.0 * Math.sin(6.0 * x * Math.PI) + 20.0 * Math.sin(2.0 * x * Math.PI)) * 2.0 / 3.0;  
                            ret += (20.0 * Math.sin(x * Math.PI) + 40.0 * Math.sin(x / 3.0 * Math.PI)) * 2.0 / 3.0;  
                            ret += (150.0 * Math.sin(x / 12.0 * Math.PI) + 300.0 * Math.sin(x / 30.0 * Math.PI)) * 2.0 / 3.0;  
                            return ret;  
                        }  

然后,把之前获取定位的代码修改一下,把打点都false掉,纠偏之后重新打点。
/获取定位
map.plugin('AMap.Geolocation', function() {
geolocation = new AMap.Geolocation({
enableHighAccuracy: true, //是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
showMarker: false,
showCircle: false,
panToLocation: true,
buttonPosition: 'RB', //定位按钮停靠位置,默认:'LB',左下角
});
map.addControl(geolocation); // 把定位插件加入地图实例
geolocation.getCurrentPosition(function(status, result) {
if(status == "complete") {
var pos = result.position;
var newPos = transform(pos.lng, pos.lat);
var marker = new AMap.Marker({
position: newPos
});

                                    marker.setMap(map);  
                                }  
                            }); // 调用定位  

这样定位就比较准确了,目测还会有十米的偏差,但是已经在可接受范围了,基本达到我们的要求。
五、禁用下拉刷新
这个就比较简单了,把这段代码注释掉就可以了,然后重新运行一下,敲重点,要重新运行,否则看不到效果。
down: {
style: 'circle',
callback: function() {

                                                                    }  
                                                                },  

重写mui.back()这个更简单了
mui.back = function(){
//需要执行的代码
};
还有一些比较常用的代码
plus.webview.currentWebview().close();//关闭当前页面
window.localStorage.removeItem("orderId")//清除本地缓存

暂时想起来这么多,希望能对大家有所帮助

1 关注 分享
移动达人

要回复文章请先登录注册

mustang_xk

mustang_xk

大佬,HBuilder.keystore文件你还有吗,能不能发到36906381qq.com邮箱,万分感谢!!
2021-03-16 19:54
2***@qq.com

2***@qq.com

问下, 在做微信支付的时候, ios可以正常支付, 但是安卓机调不起微信, 不知道这个问题你有没有遇到过, 291141435@qq.com邮箱, 谢谢
2020-03-28 17:38
移动达人

移动达人

不错,顶一下。
2018-05-31 11:45