最近在找最方便的年检地,但是有地址,却无法直观判断。各种地图应用也没有自定义多点显示。遂自己找了百度地图api写了个自定义多点显示的页面。碰到点坑,记录一下,分享一下。如果看官们觉的不错,或者有用,请留个爪印鼓励鼓励或者指出不足,也不枉我花时间写这么老半天。:)
环境:win10 1609 , 浏览器:Edge,ie,chrome
目录
坑二:BMap.Geocoder 和 BMap.LocalSearch
坑三:InfoWindow 信息窗口和 SearchInfoWindow 搜索信息窗口
坑一:跨域
api文档要求,引入格式为:
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的key"></script>
由于是本地用js写的一个页面,Edge直接不允许执行,在不改变安全配置的基础上,几乎无解,而且无论如何该页面,均会出错,最终放弃。
chrome的console中,一直出现错误
A parser-blocking, cross site (i.e. different eTLD+1) script, http://api.map.baidu.com/getscript?v=2.0&ak=你的key信息&services=&t=20181212102408, is invoked via document.write. The network request for this script MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message. See https://www.chromestatus.com/feature/5718547946799104 for more details.
查了一下,是跨域错误,点进错误链接中看见这个src指向的脚本:
(function(){ window.BMap_loadScriptTime = (new Date).getTime(); document.write('<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=你的key&services=&t=20181212102408"></script>');})();
由于用的document.write 重写脚本位置,造成chrome跨域错误。
搜索了一下网上信息,觉得最方便的就是直接将src改为脚本中的