微信网页开发,JS-SDK说明文档(openLocation地图错误)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

获取微信信息,我这是php代码

//获取微信信息
    public function getSignPackage() {
    	$appId = $this->_mp['appid'];
    	$appSecret = $this->_mp['appsecret'];
    	
		$jsapiTicket = $this->getJsApiTicket($appId,$appSecret);
	    // 注意 URL 一定要动态获取,不能 hardcode.
	    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
	    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
	
	    $timestamp = time();
	    $nonceStr = $this->createNonceStr();
	
	    // 这里参数的顺序要按照 key 值 ASCII 码升序排序
	    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
	
	    $signature = sha1($string);
	
	    $signPackage = array(
	      "appId"     => $appId,
	      "nonceStr"  => $nonceStr,
	      "timestamp" => $timestamp,
	      "url"       => $url,
	      "signature" => $signature,
	      "rawString" => $string
	    );
	    return $signPackage; 
	}

然后前端引入js

初始化

代码很简单,根本没有变动,完全按照官网的api写的,就连参数都是用的官网的参数,怎么地图的出不来,尤其ios安装有的时候还能出来,但是也是随机性,我在网上找了很久解决办法,发现遇见问题的人不少,还挺多的,但是没有一种办法能解决问题,下面我说下网上解决办法

第一种:都是让你看看你的初始化里面是否添加了你要用的接口

第二种:坐标参数是不允许用字符串的

第三种:坐标参数是火星坐标,也就是说你先调用getLocation获取坐标信息,然后在调用openLocation来实现地图展示

我记忆里就大概就这三个了,我都尝试了,就是出不来不知道为啥,初始化里面肯定添加了,因为我尝试用checkJsApi这个接口来检测了(用来检测你要用的接口是否可用),返回的信息是ok,openLocation这个接口是可以用的,但是执行到这个接口的时候就报错,提示没有权限,怎么都掉不通

解决办法

墨迹半天了,说最后问题出在了那里,其实很简单,就是执行顺序问题

具体微信是怎么做的我不知道,但是你初始化接口的时候,是要一定的时间的,有些接口会很快,但是有些接口确实慢,也许是他要加载一些东西吧

比如我用过几个接口getLocation,checkJsApi,uploadImage,previewImage等等 都是没有问题的,上面的代码那样写没有问题,api都是通的,但是openLocation这个接口就不行了,官网的dome就能出来,自己本地就是出不来,最后我发现一个问题,就是官网的config是页面直接写在script标签里面的,但是所有的接口都是写在一个文件里面的ready这里面的接口都是写在一个js文件里面的,然后页面引入这个文件就好了,只要你把ready里面所用的接口都放在一个文件里面,所有的接口都通,openLocation这个接口自然也就通了

这就是我所说的,就是页面加载顺序,如果你把代码放在一个js文件里面是最后加载的,但是在script标签里面的代码是先执行的,跟随dome一起加载,这些都加载完了在加载js文件,有人会说如果把js文件写在前面不就行了吗,那也不行,就算你写在前面页面执行到你script标签的时候发现是一个文件,那么他就得去服务器取这个文件,然后在加载到页面上,速度还是不如script执行的快,因为有网络延迟

暂时就遇到这些问题,以后如果有问题继续补充,也欢迎大家有问题评论在下面,我去验证,然后加上

转载于:https://my.oschina.net/u/1858920/blog/983259

你可能感兴趣的:(移动开发,前端,json)