如何在微信中调用safrai打开一个页面

iPhone中微信如何让用户不用点击在safari中打开,就能用safari打开一个网页,微信有个接口openUrlByExtBrowser好像不能使用,有人了解吗?或者其他方法

2个回答

传送门:https://blog.csdn.net/vM199zkg3Y7150u5/article/details/79178252
这个和你的需求很相似,尝试一下,

qq_36720088
Hanlex-Liu 回复weixin_43251155: 从浏览器直接打开微信内置浏览器并访问指定页面,是可以的,虽然微信封了接口(收回了签名算法),但是网上有但是要收费,源码是5000块好像,我忘了,你这个问题是反向的,我之前没接触过
一年多之前 回复
weixin_43251155
weixin_43251155 好像不行,只能打开应用,谢谢你。
一年多之前 回复

好像不行,只能打开应用,谢谢你。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
IOS系统如何实现在微信分享页中指导用户点击在Safari 中打开页面并在浏览器实现唤醒app

在微信中使用universal link可以直接唤醒app,但是现在需求是在右上角通过打开Safari在浏览器中访问页面,并实现用URL scheme打开app,跳到指定页?

为什么iOS H5 APP 调用微信H5支付后不返回到App而是打开了safari浏览器?

iOS 封装的H5 APP 调用微信H5支付,进入微信支付界面后,点击取消,或者支付完成返回不能返回到App,而是打开了手机系统的safari浏览器。 用的h5+ 请问有解决方案吗

iPhone版微信,在公众号点击菜单,会跳转到safari打开!

大家遇到过吗!安卓系统没问题!而且iPhone端会搜索不到公众号!

ios版微信url跳转问题

在微信里打开一个网页 不管怎么跳转复杂url都是第一次打开网页的地址ios版微信,安卓端正常

H5微信支付成功但回调页面进不去0

有几个点描述下, 1.代码应该问题不大。notify_url是 http://xx.xx.com/xx/xxx/ 2.我在iis日志中发现,微信有给我服务器post 这个地址。只是代码没有调用,标识302 3.我在这个回调页中第一行代码就输出调试代码,没反应。证明调用没有进来过。 有没有人能提供个线索,还有就是怎么能获取所有post服务器iis的全路径。

APP应用内嵌h5页面怎么直接打开Safari来访问链接?

APP应用内嵌h5页面,想点击链接通过Safari打开访问,但是试了很多方法,一直停留在App面,跪求解决方案!在此先谢谢啦

iOS webView 微信H5支付返回问题

在iOS的webview中,h5自己调用微信支付,能够成功起调,并且能完成支付,但是点击完成时,跳转到safari浏览器中,并不能跳回app。

微信公众号网页跳转无法使用微信内置浏览器实现

请教各位一个问题,我自己用php编写的网页用花生壳外网发布后,将链接填写到公众号菜单中,但是点击菜单后不能直接跳转网页,而需要Safari ,请问这怎么解决![图片说明](https://img-ask.csdn.net/upload/201801/16/1516079032_730625.jpg)

求助,ios微信浏览器播放音频问题?

h5项目中,需要自动播放音频,音频地址接口获取 ``` mounted() { this.fetchDialogInfo(); }, methods: { // 获取数据 fetchDialogInfo() { //此处调接口获取音频地址this.src this.initAudio() }, // 初始化播放器 initAudio() { this.player.src = this.src ; document.addEventListener( "WeixinJSBridgeReady", function() { alert(111) this.player.play(); }, false ); }, } ``` 网上找的解决办法都是使用WeixinJSBridgeReady,但是我这里却触发不了 alert都不出来,求问各位大神是什么原因呀?

手机QQ内置浏览器打开链接后 跳转到safari或者安卓内置浏览器打开 求分析是如何实现的?

也就是一个网站A 在QQ上发出后 点击进入跳转到手机自带的浏览器 ?? 有大神来帮忙吗??

怎样在HTML的页面实现调用IOS短信界面,传递预置的收件人和短信内容

想做个HTML的页面实现调用IOS短信界面,传递收件人和短信内容。 安卓的很简单就可以实现了: <a href="sms:10086?body='.urlencode("test#552#13912345678").'" >测试连接,不要点击</a> 在苹果IOS上,在【UC浏览器】的话,也是可行的。 但是,IOS微信/自带safari浏览器下均不行,只能带收件人号码,带不了内容,而且,上例的“?body='.urlencode("test#552#13912345678")”会全部作为发件人号码处理。 请求高手指点,怎样实现期待的功能:在HTML的页面实现调用IOS短信界面,传递收件人和短信内容。 (笔者服务器环境:IIS6.0+PHP5.3+MYSQL5.6)

H5下拉刷新,上拉加载的bug,求大神帮忙解决。

最近在使用mescroll这个下拉刷新,上拉加载组件的时候遇到一个奇怪的问题,在没有数据的时候底部会显示一个没有更多数据的时候页面就划不动了,如下图: ![图片说明](https://img-ask.csdn.net/upload/201803/02/1519958175_914335.jpg) ![图片说明](https://img-ask.csdn.net/upload/201803/02/1519958186_970394.png) 注:到这个暂无更多商家显示出来的时候,页面就划不动了。 ![图片说明](https://img-ask.csdn.net/upload/201803/02/1519958389_42425.png) 点击这个返回顶部按钮之后页面正常滑动,但是知道重新拉到最底部页面还是划不动。 更奇怪的是这个问题在Safari浏览器、QQ自带浏览器会出现这种问题(已知的) 但是微信自带的浏览器就没有任何问题,UC浏览器也没有问题,安卓的试了几款都没有问题,真的是头大,谁遇到过怎么解决的。谢谢

ios集成h5页面但是无法使用4g网络来进行定位(js api)

ios集成h5页面但是无法使用4g网络来进行定位(js api), 其中手机浏览器包括safari, chrome等都是可以访问的, 就唯独集成到IOS中不得行. 用公司的WiFi是可以成功定位的, 换成了4g之后就没办法定位了, 报 get geolocation time out , get ipLocation failed错误, 使用的是高德地图的定位功能, 原生的h5定位也试过, 同样不可以

通过Nginx请求到api服务器(Golang)失败并返回404错误

<div class="post-text" itemprop="text"> <p>I'm setting up nginx in docker environment.<br> When I try to access to api server via nginx port, request returns 404 error.<br></p> <p>Here is the stack.</p> <pre><code>・client: react/axios ・api: golang/gin ・web server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk </code></pre> <p>Entire source code is here:<br> <a href="https://github.com/jpskgc/article" rel="nofollow noreferrer">https://github.com/jpskgc/article</a></p> <pre><code>article ├ client │ └ nginx │ └ default.conf ├ api ├ nginx │ └ default.conf └ docker-compose.yml </code></pre> <p>Here is <code>docker-compose.yml</code>.</p> <pre><code>//docker-compose.yml version: '3' services: nginx: restart: always build: dockerfile: Dockerfile.dev context: ./nginx ports: - '3050:80' depends_on: - client - api api: build: dockerfile: Dockerfile.dev context: ./api volumes: - ./api:/app depends_on: - db tty: true environment: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - MYSQL_USER - MYSQL_PASSWORD - MYSQL_HOST client: build: dockerfile: Dockerfile.dev context: ./client volumes: - /app/node_modules - ./client:/app </code></pre> <p>Here is <code>default.conf</code>.</p> <pre><code>//default.conf upstream client { server client:3000; } upstream api { server api:2345; } server { listen 80; location / { proxy_pass http://client; } location /sockjs-node { proxy_pass http://client; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } location /api { rewrite /api/(.*) /$1 break; proxy_pass http://api; } } </code></pre> <p>Also there is <code>default.conf</code> in client.</p> <pre><code>server { listen 3000; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } } </code></pre> <p>I expect nginx reverse proxy to port 2345 api server.<br> But the actual returns 404 response.</p> <pre><code>nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:06 +0000] "GET /static/js/bundle.js HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:07 +0000] "GET /static/js/0.chunk.js HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:07 +0000] "GET /static/js/main.chunk.js HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:07 +0000] "GET /static/js/bundle.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:08 +0000] "GET /static/js/0.chunk.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:08 +0000] "GET /static/js/main.chunk.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" api_1 | [GIN] 2019/08/09 - 22:19:09 | 404 | 41.937µs | 172.23.0.5 | GET /articles nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:09 +0000] "GET /api/articles HTTP/1.1" 404 18 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:10 +0000] "GET /sockjs-node/info?t=1565389150444 HTTP/1.1" 200 90 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:10 +0000] "GET /manifest.json HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" </code></pre> <p>Also when accessing to actual deployed url, it returns <code>502 Bad Gateway</code> now.<br> <a href="http://multidocker-env.vwnrixavuv.ap-northeast-1.elasticbeanstalk.com/api/articles" rel="nofollow noreferrer">http://multidocker-env.vwnrixavuv.ap-northeast-1.elasticbeanstalk.com/api/articles</a></p> </div>

如何用JavaScript实现方位角计算并且调用指针指示角度?

``` ```<!DOCTYPE html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta content="always" name="referrer"> <meta name="theme-color" content="#2932e1"> <title>RCP For A320NG</title> </head> <body> <style> .shu { width: 2px; font-size: 15px; word-wrap: break-word; } @font-face{ font-family: digital-display; src: url('digital-display.ttf'), url('digital-display.eot'); /* IE9+ */ } .Digits{ position:absolute; top:120px;left:10px; height:60px;width:230px; line-height:60px; color:white; font-size:70px;font-family:digital-display; display:block; float:left; text-align:right; } .to_top { width: 0; height: 0; border-bottom: 30px solid white; border-left: 20px solid transparent; border-right: 20px solid transparent; } .top{ width: 0; height: 0; border-bottom: 30px solid white; border-left: 20px solid transparent ; border-right: 20px solid transparent ; } </style> <div id="DME1" class = "Digits" style="">1.300</div> <div id="DME2" class = "Digits" style="left:260px;">----</div> <div id="asd"style="position: absolute; top:600px;left:200px;font-family: Microsoft YaHei;letter-spacing:5px;color:white;">ADF</div> <div id="asd1"style="position: absolute; top:600px;left:350px;font-family: Microsoft YaHei;letter-spacing:5px;color:white;">ADF</div> <div id="asd2"class="shu" style="position: absolute; left:80px;top:470px;font-family: Microsoft YaHei;color:white;">VOR</div> <div id="asd3"class="shu" style="position: absolute; left:480px;top:470px;font-family: Microsoft YaHei;color:white;">VOR</div> <div id="mat"class="to_top" style="position: absolute; left:60px;top:570px;color:white;"></div> <div id="mat2"style="position: absolute; width:10px;height:10px;border:1px solid white;left:75px;top:600px;background:white;"></div> <div id="mat3"style="position: absolute; width:10px;height:10px;border:1px solid white;left:75px;top:615px;background:white;"></div> <div id="mat4"style="position: absolute; width:10px;height:10px;border:1px solid white;left:75px;top:630px;background:white;"></div> <div id="ExchangeBtn" class="button" style="position:absolute; left:470px;top:600px;font-size:90px;font-weight:bold;font-family: Microsoft YaHei;line-height:15px;color:white;">&#8679;</div> <canvas id="solar" style="border:0px solid;left:10px;top:10px;position:absolute;z-index:-1;width:560px;height:670px;scale:0.5;"></canvas> <div id="Message" ></div> <div id="Message2" ></div> </body> <script> init(); let pi = Math.PI; let DialCenterX = 275; let DialCenterY = 400; let DialRadius = 180; let CompassHeading = 0; let Latitude=0; let Longitude=0; let DME1_lat= 39.10960; let DME1_long= 117.35343; let DME1Distance = 0; let hand1=30; //VOR方位角 let hand2=0; let gap_dial_hand = 60; let hand_length = DialRadius - gap_dial_hand; window.addEventListener("deviceorientation", findNorth); var Message =document.getElementById("Message"); var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端 iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部 weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sQQ/i) == " qq" //是否QQ }; }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() } function draw(ctx,DialDeg,HandDeg1,HandDeg2){ //drawDial(ctx,DialDeg); //绘制表盘 //drawAllHands(ctx,HandDeg1,HandDeg2); //绘制时分秒针 requestAnimationFrame(function step(){ getLocation(); DME1Distance = getDisance(Latitude, Longitude, DME1_lat, DME1_long); if(DME1Distance>722094) DME1Distance="----"; document.getElementById("DME1").innerHTML = DME1Distance; drawDial(ctx,CompassHeading); //绘制表盘 drawAllHands(ctx,hand1,hand2); //绘制时分秒针 requestAnimationFrame(step); }); } function toRad(d) { return d * Math.PI / 180; } function getDisance(lat1, lng1, lat2, lng2) { //lat为纬度, lng为经度, 一定不要弄错 var dis = 0; var radLat1 = toRad(lat1); var radLat2 = toRad(lat2); var deltaLat = radLat1 - radLat2; var deltaLng = toRad(lng1) - toRad(lng2); var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2))); dis = dis * 6378137; dis = dis ;///1852 ;//转为海里 return dis.toFixed(1); } function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else{ Message.innerHTML="Geolocation is not supported by this browser."; } } function showPosition(position) { Message.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude +"<br/>accuracy:"+ position.coords.accuracy; Latitude = position.coords.latitude; Longitude = position.coords.longitude; } function findNorth(evt) { if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { CompassHeading = 360-evt.webkitCompassHeading.toFixed(0); //window.location.href ="iPhone.html"; } else if (/(Android)/i.test(navigator.userAgent)) { //alert(navigator.userAgent); CompassHeading = evt.alpha -90; document.getElementById("Message2").innerHTML = "您的手机需要校准指南针,请将手机指向正北后刷新页面。"; } else { } } function init(){ let canvas = document.querySelector("#solar"); canvas.width = 560; canvas.height = 670; let ctx = canvas.getContext("2d"); drawOutline(ctx); //strokeRoundRect(ctx, 10, 10, 100, 50, 10); fillRoundRect(ctx, 40, 95, 216, 124, 30, 'rgba(99,116,122,1)'); fillRoundRect(ctx, 50, 105, 192, 68, 15, 'rgba(0,0,0,1)'); fillRoundRect(ctx, 295, 95, 216, 124, 30, 'rgba(99,116,122,1)'); fillRoundRect(ctx, 305, 105, 192, 68, 15, 'rgba(0,0,0,1)'); //fillRoundRect(ctx, 50, 50, 450, 600, 20, 'rgba(0,0,0,1)'); draw(ctx,30,30,60); ctx.font = '20px "微软雅黑"'; ctx.fillStyle = "white"; ctx.fillText("DME-1", 110, 200); ctx.font = '20px "微软雅黑"'; ctx.fillStyle = "white"; ctx.fillText("DME-2", 370, 200); } /*绘制时分秒针*/ function drawAllHands(ctx,HandDeg1,HandDeg2){ let time = new Date(); let s = time.getSeconds(); let m = time.getMinutes(); let h = time.getHours(); let pi = Math.PI; let secondAngle = HandDeg1;//pi / 180 * 6 * s; //计算出来s针的弧度 let minuteAngle = pi / 180 * HandDeg1; //计算出来分针的弧度 let hourAngle = pi / 180 *HandDeg2;//pi / 180 * 30 * h + minuteAngle / 12; //计算出来时针的弧度 // drawHand2(hand2 + CompassHeading, hand_length, 2, "white", ctx); //绘制时针,(角度,针长,粗细,颜色,canvas) drawHand(hand1 + CompassHeading, hand_length, 2, "white", ctx); //绘制分针 //drawHand(secondAngle, 150, 2, "blue", ctx); //绘制秒针 } /*绘制时针、或分针、或秒针 * 参数1:要绘制的针的角度 * 参数2:要绘制的针的长度 * 参数3:要绘制的针的宽度 * 参数4:要绘制的针的颜色 * 参数4:ctx * */ function drawHand(angle, len, width, color, ctx){ ctx.save(); ctx.translate(DialCenterX, DialCenterY); //把坐标轴的远点平移到原来的中心 ctx.rotate(angle*pi/180 + pi/2); //旋转坐标轴。 x轴就是针的角度,rad ctx.beginPath(); ctx.moveTo(-DialRadius + gap_dial_hand, 0); //ctx.lineTo(len, 0); // 沿着x轴绘制针 ctx.font="18px microsoft yahei"; ctx.fillStyle="white"; var x = 4-DialRadius + gap_dial_hand; //指针起点x ctx.fillText("◀",x,6); for(i=x+5;i<len;){ ctx.moveTo(i, 0); ctx.lineTo(i+10, 0); i = i+20; } ctx.lineWidth = width; ctx.strokeStyle = color; ctx.lineCap = "round"; ctx.stroke(); ctx.closePath(); ctx.restore(); } function drawHand2(angle, len, width, color, ctx){ ctx.save(); ctx.translate(DialCenterX, DialCenterY); //把坐标轴的远点平移到原来的中心 ctx.rotate(angle*pi/180 +pi/2); //旋转坐标轴。 x轴就是针的角度 ctx.beginPath(); ctx.moveTo(-DialRadius + gap_dial_hand, 0); //ctx.lineTo(len, 0); // 沿着x轴绘制针 ctx.font="30px microsoft yahei"; ctx.fillStyle="white"; var x = -DialRadius + gap_dial_hand; ctx.moveTo(x, 0); ctx.lineTo(x+20, 10);ctx.lineTo(x+20, 5); ctx.lineTo(len, 5);ctx.lineTo(len, -5); ctx.lineTo(x+20, -5);ctx.lineTo(x+20, -10); ctx.lineTo(x, 0); ctx.lineWidth = width; ctx.strokeStyle = color; ctx.lineCap = "round"; ctx.stroke(); ctx.closePath(); ctx.restore(); } /*绘制表盘*/ function drawDial(ctx,DialDeg){ let pi = Math.PI; //ctx.clearRect(0, 0, 600, 600); //清除所有内容 ctx.save(); ctx.translate(DialCenterX, DialCenterY); //移动坐标原点到原来的中心 ctx.beginPath(); ctx.arc(0, 0, DialRadius, 0, 2*pi); //绘制圆周 //ctx.stroke(); //context.clip(); ctx.closePath(); // 填充颜色 ctx.fillStyle = "#202020"; ctx.fill(); for (let i = 0; i < 72; i++){//绘制刻度盘和数字 ctx.save(); ctx.rotate(pi/180*DialDeg + i * pi / 36); //旋转坐标轴。修改第一个参数可以旋转表盘 ctx.beginPath(); ctx.moveTo(DialRadius-37, 0); if(i % 2 == 0){ ctx.lineTo(DialRadius-1, 0); }else{ ctx.lineTo(DialRadius-16, 0); } ctx.lineWidth = i % 5 ? 4 : 4; ctx.strokeStyle = i % 5 ? "white" : "white"; ctx.stroke(); ctx.closePath(); if(i % 6 == 0){ ctx.lineWidth = 1; ctx.font="24px microsoft yahei"; //ctx.strokeText(i/3,0,-150); //填充 ctx.fillStyle="white"; if(i>9) ctx.fillText(i*0.5,-12,60-DialRadius); //-150 else ctx.fillText(i*0.5,-6,60-DialRadius); } ctx.restore(); } for (let i = 0; i < 8; i++){//绘制三角标 ctx.save(); ctx.rotate(pi/180*0 + i * pi / 4); //旋转坐标轴。修改第一个参数可以旋转表盘 ctx.font="24px microsoft yahei"; ctx.fillStyle="white"; ctx.fillText("▼",-12,-1*DialRadius); ctx.restore(); } ctx.restore(); } VincentyConstants = { a: 6378137, b: 6356752.3142, f: 1/298.257223563 } /** *Calculate destination point given start point lat/long (numeric degrees), * bearing (numeric degrees) & distance (in m). */ function destinationVincenty(lonlat, brng, dist) { var u = this; var ct = u.VincentyConstants; var a = ct.a, b = ct.b, f = ct.f; var lon1 = lonlat.lon*1; //乘一(*1)是为了确保经纬度的数据类型为number var lat1 = lonlat.lat*1; var s = dist; var alpha1 = u.rad(brng); var sinAlpha1 = Math.sin(alpha1); var cosAlpha1 = Math.cos(alpha1); var tanU1 = (1-f) * Math.tan(u.rad(lat1)); var cosU1 = 1 / Math.sqrt((1 + tanU1*tanU1)), sinU1 = tanU1*cosU1; var sigma1 = Math.atan2(tanU1, cosAlpha1); var sinAlpha = cosU1 * sinAlpha1; var cosSqAlpha = 1 - sinAlpha*sinAlpha; var uSq = cosSqAlpha * (a*a - b*b) / (b*b); var A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq))); var B = uSq/1024 * (256+uSq*(-128+uSq*(74-47*uSq))); var sigma = s / (b*A), sigmaP = 2*Math.PI; while (Math.abs(sigma-sigmaP) > 1e-12) { var cos2SigmaM = Math.cos(2*sigma1 + sigma); var sinSigma = Math.sin(sigma); var cosSigma = Math.cos(sigma); var deltaSigma = B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM))); sigmaP = sigma; sigma = s / (b*A) + deltaSigma; } var tmp = sinU1*sinSigma - cosU1*cosSigma*cosAlpha1; var lat2 = Math.atan2(sinU1*cosSigma + cosU1*sinSigma*cosAlpha1, (1-f)*Math.sqrt(sinAlpha*sinAlpha + tmp*tmp)); var lambda = Math.atan2(sinSigma*sinAlpha1, cosU1*cosSigma - sinU1*sinSigma*cosAlpha1); var C = f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha)); var L = lambda - (1-C) * f * sinAlpha * (sigma + C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM))); var revAz = Math.atan2(sinAlpha, -tmp); // final bearing var lon_destina = lon1*1+u.deg(L); //var num_lon_dest = lon_destina*1; //var lon_destina = new Number; var lonlat_destination = {lon: lon_destina, lat: u.deg(lat2)}; return lonlat_destination; } /** * 度换成弧度 * @param {Float} d 度 * @return {[Float} 弧度 */ function rad(d) { return d * Math.PI / 180.0; } /** * 弧度换成度 * @param {Float} x 弧度 * @return {Float} 度 */ function deg(x) { return x*180/Math.PI; } function drawOutline (ctx){ //开始路径 ctx.beginPath(); ctx.moveTo(70, 2); ctx.lineTo(472, 2); ctx.lineTo(550, 70); ctx.lineTo(550, 597); ctx.lineTo(472, 665); ctx.lineTo(70, 665); ctx.lineTo(2, 597); ctx.lineTo(2, 70); ctx.lineTo(70, 2); ctx.closePath(); //路径闭合 //if(strokeStyle) { ctx.strokeStyle = "gray"; ctx.lineWidth = 1; ctx.lineJoin = 'round'; ctx.stroke(); } //if(fillStyle) { ctx.fillStyle = 'rgba(135,162,174,1)'; ctx.fill(); } ctx.restore(); ctx.beginPath(); ctx.moveTo(40, 84); ctx.lineTo(511, 84); ctx.lineTo(511, 510); ctx.lineTo(390, 642); ctx.lineTo(169, 642); ctx.lineTo(40, 510); ctx.lineTo(40, 84); ctx.closePath(); { ctx.strokeStyle = "darkgray"; ctx.lineWidth = 1; ctx.lineJoin = 'round'; ctx.stroke(); } //if(fillStyle) { ctx.fillStyle = 'rgba(63,74,76,1)'; ctx.fill(); } } /**该方法用来绘制一个有填充色的圆角矩形 *@param cxt:canvas的上下文环境 *@param x:左上角x轴坐标 *@param y:左上角y轴坐标 *@param width:矩形的宽度 *@param height:矩形的高度 *@param radius:圆的半径 *@param fillColor:填充颜色 **/ function fillRoundRect(cxt, x, y, width, height, radius, /*optional*/ fillColor) { //圆的直径必然要小于矩形的宽高 if (2 * radius > width || 2 * radius > height) { return false; } cxt.save(); cxt.translate(x, y); //绘制圆角矩形的各个边 drawRoundRectPath(cxt, width, height, radius); cxt.fillStyle = fillColor || "#000"; //若是给定了值就用给定的值否则给予默认值 cxt.fill(); cxt.restore(); } /**该方法用来绘制圆角矩形 *@param cxt:canvas的上下文环境 *@param x:左上角x轴坐标 *@param y:左上角y轴坐标 *@param width:矩形的宽度 *@param height:矩形的高度 *@param radius:圆的半径 *@param lineWidth:线条粗细 *@param strokeColor:线条颜色 **/ function strokeRoundRect(cxt, x, y, width, height, radius, /*optional*/ lineWidth, /*optional*/ strokeColor) { //圆的直径必然要小于矩形的宽高 if (2 * radius > width || 2 * radius > height) { return false; } cxt.save(); cxt.translate(x, y); //绘制圆角矩形的各个边 drawRoundRectPath(cxt, width, height, radius); cxt.lineWidth = lineWidth || 2; //若是给定了值就用给定的值否则给予默认值2 cxt.strokeStyle = strokeColor || "#000"; cxt.stroke(); cxt.restore(); } function drawRoundRectPath(cxt, width, height, radius) { cxt.beginPath(0); //从右下角顺时针绘制,弧度从0到1/2PI cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2); //矩形下边线 cxt.lineTo(radius, height); //左下角圆弧,弧度从1/2PI到PI cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI); //矩形左边线 cxt.lineTo(0, radius); //左上角圆弧,弧度从PI到3/2PI cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2); //上边线 cxt.lineTo(width - radius, 0); //右上角圆弧 cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2); //右边线 cxt.lineTo(width, height - radius); cxt.closePath(); } </script> </html>

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

做了5年运维,靠着这份监控知识体系,我从3K变成了40K

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

立即提问
相关内容推荐