array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(9) "308660876" ["text"]=> string(45) "安全测试前置实践1-白盒&黑盒扫描" ["intro"]=> string(411) "本文我们将以围绕系统安全质量提升为目标,讲述在安全前置扫描上实践开展过程。希望通过此篇文章,帮助大家更深入、透彻地了解安全测试,能快速开展安全测试。 作者:京东物流 陈维 一、引言 G.J.Myers在《软件测试的艺术》中提出:从心理学角度来说,测试是一个为了寻找错误而运行程序的过程。 " ["username"]=> string(12) "jingdongkeji" ["tagsname"]=> string(39) "前端|安全|黑盒测试|白盒测试" ["tagsid"]=> string(29) "["160","2823","14120","5741"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1681206002" ["_id"]=> string(9) "308660876" } [1]=> array(10) { ["id"]=> string(9) "308660875" ["text"]=> string(24) "vulnhub靶场之ORASI: 1" ["intro"]=> string(256) "准备: 攻击机:虚拟机kali、本机win10。 靶机:Orasi: 1,下载地址:https://download.vulnhub.com/orasi/Orasi.ova,下载后直接vbox打开即可。 知识点:hex编码、ida逆向、AndroidKiller逆向、ffuf爆破、ssti漏洞、s" ["username"]=> string(6) "upfine" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1681204802" ["_id"]=> string(9) "308660875" } [2]=> array(10) { ["id"]=> string(9) "308660874" ["text"]=> string(92) "C# Kafka重置到最新的偏移量,即从指定的Partition订阅消息使用Assign方法" ["intro"]=> string(428) "在使用Kafka的过程中,消费者断掉之后,再次开始消费时,消费者会从断掉时的位置重新开始消费。 场景再现:比如昨天消费者晚上断掉了,今天上午我们会发现kafka消费的数据不是最新的,而是昨天晚上的数据,由于数据量比较多,也不会及时的消费到今天上午的数据,这个时候就需要我们对偏移量进行重置为最新的,以" ["username"]=> string(15) "Poetwithapistol" ["tagsname"]=> string(10) ".NET|Kafka" ["tagsid"]=> string(13) "["300","440"]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1681203303" ["_id"]=> string(9) "308660874" } [3]=> array(10) { ["id"]=> string(9) "308660873" ["text"]=> string(129) "迁移学习()《Attract, Perturb, and Explore: Learning a Feature Alignment Network for Semi-supervised Domain Adaptation》" ["intro"]=> string(194) "论文信息 论文标题:Attract, Perturb, and Explore: Learning a Feature Alignment Network for Semi-supervised Domain Adaptation论文作者:Taekyung Kim论文来源:2020 ECCV论文地" ["username"]=> string(12) "BlairGrowing" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1681203302" ["_id"]=> string(9) "308660873" } [4]=> array(10) { ["id"]=> string(9) "308660872" ["text"]=> string(92) "C# Kafka重置到最新的偏移量,即从指定的Partition订阅消息使用Assign方法" ["intro"]=> string(428) "在使用Kafka的过程中,消费者断掉之后,再次开始消费时,消费者会从断掉时的位置重新开始消费。 场景再现:比如昨天消费者晚上断掉了,今天上午我们会发现kafka消费的数据不是最新的,而是昨天晚上的数据,由于数据量比较多,也不会及时的消费到今天上午的数据,这个时候就需要我们对偏移量进行重置为最新的,以" ["username"]=> string(10) "goodboydcc" ["tagsname"]=> string(10) ".NET|Kafka" ["tagsid"]=> string(13) "["300","440"]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1681202402" ["_id"]=> string(9) "308660872" } [5]=> array(10) { ["id"]=> string(9) "308660870" ["text"]=> string(42) "Django怎么使用原生SQL查询数据库" ["intro"]=> string(392) "这篇文章主要介绍“Django怎么使用原生SQL查询数据库”,在日常操作中,相信很多人在Django怎么使用原生SQL查询数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Django怎么使用原生SQL查询数据库”的疑惑有所帮助!接下来,请跟着小编一起来学习吧! D" ["username"]=> NULL ["tagsname"]=> string(20) "django|sql|数据库" ["tagsid"]=> NULL ["catesname"]=> string(0) "" ["catesid"]=> NULL ["createtime"]=> string(10) "1681201981" ["_id"]=> string(9) "308660870" } [6]=> array(10) { ["id"]=> string(9) "308660871" ["text"]=> string(37) "Express怎么实现定时发送邮件" ["intro"]=> string(432) "今天小编给大家分享一下Express怎么实现定时发送邮件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 在开发中我们有时候需要每隔 一段时间发送一次电子邮件,或者在某个特定的时间进行发" ["username"]=> NULL ["tagsname"]=> string(7) "express" ["tagsid"]=> NULL ["catesname"]=> string(0) "" ["catesid"]=> NULL ["createtime"]=> string(10) "1681201981" ["_id"]=> string(9) "308660871" } [7]=> array(10) { ["id"]=> string(9) "308660869" ["text"]=> string(29) "mysql运维------分库分表" ["intro"]=> string(412) "1. 介绍 问题分析: 随着互联网以及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费" ["username"]=> string(13) "qds1401744017" ["tagsname"]=> string(5) "mysql" ["tagsid"]=> string(7) "["237"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1681200304" ["_id"]=> string(9) "308660869" } [8]=> array(10) { ["id"]=> string(9) "308660868" ["text"]=> string(41) "ASP.NET Core - 缓存之内存缓存(下)" ["intro"]=> string(292) "话接上篇 [ASP.NET Core - 缓存之内存缓存(上)],所以这里的目录从 2.4 开始。 2.4 MemoryCacheEntryOptions MemoryCacheEntryOptions 是内存缓存配置类,可以通过它配置缓存相关的策略。除了上面讲到的过期时间,我们还能够设置下面这些" ["username"]=> string(6) "wewant" ["tagsname"]=> string(12) "asp.net core" ["tagsid"]=> string(7) "["179"]" ["catesname"]=> string(25) "APS.NET Core 系列总结" ["catesid"]=> string(9) "["15288"]" ["createtime"]=> string(10) "1681200302" ["_id"]=> string(9) "308660868" } [9]=> array(10) { ["id"]=> string(9) "308660867" ["text"]=> string(9) "SPI协议" ["intro"]=> string(334) "SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外设接口。广泛用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。区分它与I2C协议差异以及FLASH存储器与EEPROM存储器的区别。下面我们分别对SPI协议的物理层及协议层进行讲解。" ["username"]=> string(8) "Kaelthas" ["tagsname"]=> string(5) "STM32" ["tagsid"]=> string(8) "["1311"]" ["catesname"]=> string(5) "STM32" ["catesid"]=> string(8) "["1139"]" ["createtime"]=> string(10) "1681199702" ["_id"]=> string(9) "308660867" } } ["count"]=> int(5621682) } 网页中嵌入google地图 - 爱码网
doinbean

一丶前言

大致需求:美国地图中标记分布的仓库图钉(鼠标经过显示地址详情),通过输入寄收件地邮编来在地图上定位位置添加图钉,将寄件地,选择的仓库,收件地图钉折线相连接,表示大致路线。

一丶google开发者中申请密钥(YOUR_API_KEY)

进入Google Developers Console创建一个Project,申请一个地图api key,可以设置api权限和访问限制。

 

二丶根据官方文档先加载出地图

参照官方文档,这里官方给出的案例是异步加载的方式,但是在实际开发项目中api只能写在引入js后面,异步加载的方式会导致调用顺序而报错,因此使用同步加载方式。

1.引入在线google map js

1 // <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script> 官方异步
2 <script src="https://maps.googleapis.com/maps/api/js?key=yourkey"></script>

2.html给容器显示地图

<div id="googleMap" style="width:100%;height:380px;"></div>

3.初始化地图

 1 <script>
 2 // 初始化地图
 3     function initialize() {
 4         var mapProp = {
 5             center:new google.maps.LatLng(37.09024,-95.71289100000001),
 6             zoom:4,
 7             mapTypeId:google.maps.MapTypeId.ROADMAP
 8         };
 9         map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
10     }
11 
12     google.maps.event.addDomListener(window, \'load\', initialize);
13 </script>
View Code

 

三丶在地图上创建图钉标记

1.根据坐标创建图钉

var myLatLng = {lat: -25.363, lng: 131.044};
var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    title: \'Hello World!\'
  });

上面的是官方文档创建的,我是用了MarkerWithLabel (MarkerWithLabel extends the Google Maps JavaScript API V3)方法创建。

我是根据后台返回的仓库数组创建一个图标list,循环添加事件

 1 function builderStorageMarker() {
 2         $.ajax({
 3             url:\'markerList.html\',
 4             success:function (res) {
 5                 warehouseList = res.data
 6                 for(var i=0;i<res.data.length;i++){
 7                     var marker = new MarkerWithLabel({
 8                         position:new google.maps.LatLng(res.data[i].longitude,res.data[i].latgitude),
 9                         labelContent: res.data[i].wareHouseName,
10                         labelAnchor: new google.maps.Point(7, 0),
11 //                        labelClass: "labels", // the CSS class for the label
12                         icon:\'/front/img/service/position_blue.png\',
13                         map: map
14                     });
15                     //对应的infowindow
16                     marker.infowindow = new google.maps.InfoWindow({
17                         content: res.data[i].address
18                     });
19                     //绑定对应的事件
20                     (function(i, marker) {
21                         google.maps.event.addListener(
22                                 marker,
23                                 \'click\',
24                                 function() {
25                                     changeColor(marker,i)
26                                 })
27                         marker.addListener(\'mouseover\', function() {
28                             marker.infowindow.open(map, marker);
29                         })
30                         marker.addListener(\'mouseout\', function() {
31                             marker.infowindow.close();
32                         });
33                     })(i, marker)
34                     makerList.push(marker)
35                 }
36             }
37         })
38     }
View Code

MarkerWithLabel.js下载地址

var marker = new MarkerWithLabel({
                        position:new google.maps.LatLng(-25.363,131.044),
                        labelContent:"图钉下面的名字",
                        labelAnchor: new google.maps.Point(7, 0),
//                        labelClass: "labels", // the CSS class for the label
                        icon:\'图钉.png\',
                        map: map
                    });

 

2.图钉绑定对应的事件

 marker.addListener(\'mouseover\', function() {
                            marker.infowindow.open(map, marker);
                        })
 marker.addListener(\'mouseout\', function() {
                            marker.infowindow.close();
                        })

 

3.点击图钉改变颜色

    function changeColor(maker,number) { 
//            maker.icon = \'/front/img/service/position_red.png\'
//            maker.setMap(map) // 使用MarkerWithLabel更改icon不起作用
        maker.setIcon(\'marker_red.png\')
    }

 

 四丶根据地址或者邮编获得经纬度,然后创建图钉标记位置

 1     //反向地址转换(geocode()是异步函数)
 2     async function zipFormatPosition(zipCode) {
 3         return new Promise(resolve => {
 4             geocoder.geocode({ \'address\': zipCode}, function (results, status) {
 5                 if (status == google.maps.GeocoderStatus.OK) {
 6         //          var latitude = results[0].geometry.location.lat();
 7         //          var longitude = results[0].geometry.location.lng();
 8                     resolve(results[0].geometry.location)
 9                 } else {
10                     $.messageBox({
11                         level: \'error\',
12                         message: \'邮编获取地址失败,请输入正确邮编\'
13                     });
14 //                    resolve(false)
15                 }
16             });
17         })
18     }
19 
20         zipFormatPosition("zipcode or address").then(result => {
21             var zipPosition = result;
22             if(zipPosition){
23                 var receiverPosition = new google.maps.LatLng(zipPosition.lat(),zipPosition.lng());
24                 receiverMaker = new google.maps.Marker({
25                     position:receiverPosition,
26                     icon:\'marker_yellow.png\'
27                 });
28                 receiverMaker.setMap(map);
29             }
30     })
View Code

 五丶构建折线连接地址

 1  var flightPlanCoordinates = [
 2           {lat: 37.772, lng: -122.214},
 3           {lat: 21.291, lng: -157.821},
 4           {lat: -18.142, lng: 178.431},
 5           {lat: -27.467, lng: 153.027}
 6         ];
 7         var flightPath = new google.maps.Polyline({
 8           path: flightPlanCoordinates,
 9           geodesic: true,
10           strokeColor: \'#FF0000\',
11           strokeOpacity: 1.0,
12           strokeWeight: 2
13         });
14 
15         flightPath.setMap(map);
View Code

 六丶彩蛋:bing地图换成了Google地图(bing map变成了demo)

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>bing</title>
 6 </head>
 7 <body>
 8 
 9 <div class="fee-est us-est" onload=\'GetMap();\'>
10     <div>后来用google地图了,bing地图变成了demo</div>
11 </div>
12 <script>
13     //bing地图
14     function GetMap() {
15         var map = new Microsoft.Maps.Map(\'#myMap\', {
16             credentials: \'AsXFUZiAIxemlXll9Pous5-umMjpOdiYdFALFnsLzWK6pzQOzXLYnbwVyojNFUnw \',
17             center: new Microsoft.Maps.Location(51.50632, -0.12714),
18             zoom: 10,
19             disableScrollWheelZoom:true
20         });
21         //添加图钉
22         var center = map.getCenter();
23 
24         //Create custom Pushpin
25         var defaultColor = \'blue\';
26         var mouseDownColor = \'purple\';
27 
28         var pin1 = new Microsoft.Maps.Pushpin(map.getCenter(), {
29             color: defaultColor
30         });
31         console.log(pin1)
32         var pin2 = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(51.50632, -0.19714), {
33             color: defaultColor
34         });
35 
36         map.entities.push(pin1);
37         map.entities.push(pin2);
38 
39         Microsoft.Maps.Events.addHandler(pin1, \'mousedown\', function (e) {
40             e.target.setOptions({ color: mouseDownColor });
41             pin2.setOptions({ color: mouseDownColor });
42         });
43 
44     }
45 </script>
46 <script type=\'text/javascript\'
47         src=\'http://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=YOUR_API_KEY\'
48         async defer></script>
49 </body>
50 </html>
View Code

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-11
  • 2021-07-31
  • 2022-12-23
  • 2021-06-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-23
  • 2022-12-23
  • 2021-04-19
  • 2021-09-27
  • 2021-11-26
相关资源
相似解决方案