首先概念:

在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

最后采用异步调用,才实现地图在弹出框的加载。但绑定的事件不起作用,艰难啊,小后端碰到前端难题。。。

贴代码留念下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/commons/include.inc.jsp"%>
<!--  -->
<script type="text/javascript">function loadMapJs() {var script = document.createElement("script");script.type = "text/javascript";script.src = "http://api.map.baidu.com/api?v=2.0&ak=XsM2qRL2DI8AXpGpBzzsfzAnzx1upYPT&callback=init";//中间的访问码ak改成公司的
        document.body.appendChild(script);}function init() {initMap();//创建和初始化地图
        createSearch();createAutocomlete();$("#s_p_search_btn").click(function () {searchPlace($("#searchplace").val());});}$(document).ready(function () {loadMapJs();//异步加载地图//console.log("123");//createAutocomlete();//setCity();
    });function initMap(){createMap();//创建地图setMapEvent();//设置地图事件
     }//创建地图函数:function createMap(){var map = new BMap.Map("BaiduDitu");//在百度地图容器中创建一个地图map.centerAndZoom('广州',11);//设定地图的中心点和坐标并将地图显示在地图容器中window.map = map;//将map变量存储在全局
     }//地图事件设置函数:function setMapEvent(){map.enableDragging();//启用地图拖拽事件,默认启用(可不写)map.enableScrollWheelZoom();//启用地图滚轮放大缩小map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)map.enableKeyboard();//启用键盘上下左右键移动地图
     }/* $(function(){initMap();//创建和初始化地图createSearch();createAutocomlete();$("#s_p_search_btn").click(function () {searchPlace($("#searchplace").val());});}); */function createSearch() {var map = window.map;var local = new BMap.LocalSearch(map,{renderOptions: { map: map, panel: "searchlist" }});window.local = local;}//搜索function searchPlace(value) {window.local.search(value);}function createAutocomlete() {var map = window.map;console.log("addr:");var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
             {"input": "searchplace","location": map});ac.addEventListener("onconfirm", function (e) {    //鼠标点击下拉列表后的事件var _value = e.item.value;var addr =_value.business+ _value.province + _value.city + _value.district + _value.street + _value.streetNumber ;searchPlace(addr);//$("#searchplace").val(addr);
            });}//地址解析并带回function setReturnPlace(){var locationName=$('#addr_del').val();if(locationName!=null){$('#addr_del').val('地址解析中...');var myGeo = new BMap.Geocoder();myGeo.getPoint(locationName, function(point){                if (point) {console.log("经度:"+point.lng);console.log("纬度:"+point.lat);if (confirm("确定是这个地址吗?\r "+locationName+"\r 经度:"+point.lng+"\r 纬度:"+point.lat)) {window.location.href="javascript:$.bringBack({place:'"+locationName+"',lng:'"+point.lng+"',lat:'"+point.lat+"'})";$('#addr_del').val('');} else{window.location.href ="javascript:void(0);"$('#addr_del').val('');}}  else{console.log("地图经纬度解析失败");    $('#addr_del').val("地图经纬度解析失败!请查找后输入准确的地址。");}                },"");                }else{//提示为空$('#addr_del').val("您的输入为空!");window.location.href ="javascript:void(0);"}return false;}</script>
<div id="cc" class="easyui-layout" data-options="fit:true"><div data-options="region:'west'" style="width:400px;"><div style="margin-bottom:10px;"><input id="addr_del" style="width: 380px;"  placeholder="请输入百度地图上的准确地址" /><a id="set_place" href="javascript:void(0);" class="easyui-linkbutton" style="width:63px;" data-options="iconCls:'icon-add'" οnclick="setReturnPlace()">确认</a><label for="map_search">地图搜索:</label><input id="searchplace" name="map_search" style="width: 380px;" class="easyui-textbox-simple" placeholder="输入搜索关键字" /><a id="s_p_search_btn" href="javascript:void(0);" class="easyui-linkbutton" style="width: 63px;"  data-options="iconCls:'icon-search'" >搜索</a></div><div id="searchlist" style="width: 350px; height: 360px; margin-right:10px; float:left;"></div></div><div data-options="region:'center'" style="padding:5px;background:#eee;"><div style="width:520px;height:540px;border:none; float:left;" id="BaiduDitu"></div><div style="clear:both;"></div></div>
</div>

虽然功能勉强实现了,但这样子的ui及前端我自己都受不了。没办法,前后端都要写,难。先搞定后端吧,前面的有空再搞,毕竟我只是个后端的。

将代码精简后得到:

<script type="text/javascript">$(document).ready(function () {var script = document.createElement("script");script.type = "text/javascript";script.src = "http://api.map.baidu.com/api?v=2.0&ak=XsM2qRL2DI8AXpGpBzzsfzAnzx1upYPT&callback=init";//中间的访问码ak改成公司的
            document.body.appendChild(script);});    function init() {var map = new BMap.Map("BaiduDitu");//在百度地图容器中创建一个地图map.centerAndZoom('广州',11);//设定地图的中心点和坐标并将地图显示在地图容器中window.map = map;//将map变量存储在全局
       }     </script>
</head>
<body><div id="BaiduDitu" style="width:100px;height:100px;"></div>
</body>
</html>

缩减后发现更清晰了,利用createElement() 方法可创建元素节点。此方法可返回一个 Element 对象。动态添加。

既然存在  document 对象,就可以把变量存放到document中使其成为全局变量。

每个载入浏览器的 HTML 文档都会成为 Document 对象。

Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

转载于:https://www.cnblogs.com/limingxian537423/p/8081401.html

同步和异步概念(由DZW前端框架引发的百度地图api无法加载问题总结)相关推荐

  1. uni-app前端框架坑点集合,打包图片加载不到问题

    uni-app中v-for ref 运行到微信小程序/字节小程序差异 vue2 <h1 ref="sign1"></h1> // 结果1<h1 v-f ...

  2. 前端项目中使用百度地图api,含实例

    前言 一.使用百度地图接口的步骤 二.简单例子 1.第一个地图 2.控件 3.静态/动态添加点圈线面 4.文字标注.信息窗口 5. Web服务API-IP定位服务 6.Web服务API-地点检索服务 ...

  3. 转圈加载html,web前端入门到实战:纯CSS实现加载转圈样式

    web前端入门到实战:纯CSS实现加载转圈样式 发布时间:2020-05-27 18:11:33 来源:51CTO 阅读:134 作者:前端向南 不同的项目中对于等待加载时转圈圈的样式是不同的,有的是 ...

  4. Google官方网络框架-Volley的使用解析Json以及加载网络图片方法

    Google官方网络框架-Volley的使用解析Json以及加载网络图片方法 Volley是什么?Google I/O 大会上,Google 推出 Volley的一个网络框架Volley适合什么场景? ...

  5. 前端(echarts+百度地图api)后端(python+flask)完成绵阳餐饮消费数据可视化系统

    一.可视化要求 针对团购网站餐饮类消费数据的可视分析系统设计与开发 大多数消费者在选择团购网站消费后会做出相应评价,从而产生海量的交易数据.这些数据包含了消费者对饮食比较全面的主观性评价和量化评分,因 ...

  6. web前端JavaScript嵌入百度地图API的方法 最详细

    web前端JavaScript嵌入百度地图API最详细的方法 一.申请成为百度开发者,获得使用地图API接口的权限,获取(AK)码. 二.实现首图效果(可以参考开发者指南) 1. 根据Hello Wo ...

  7. 网络同步与异步概念整理

    在网络同步中,有两种同步方式,分别为同步与异步. 同步的操作指的是,当所有的操作请求都做完,才将结果返回给用户,用户才能进行下一个操作,这样就会让用户有一种卡顿的感觉,因为需要等待上一步操作的执行结果 ...

  8. 魔方APP项目-01-移动端开发相关概念、移动端自适配、元信息(meta)、开发准备、移动端项目搭建(模拟器调试)、APICloud(APICloud 前端框架,获取服务端API接口)

    一.移动端开发相关概念 1.APP类型 ①.Native APP Native APP又称原生APP,就是我们平时说的手机应用软件. 原生APP 是针对IOS.Android.Windows等不同的手 ...

  9. nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...

    决定优化方向 首先打开 Inspect - Network 查看请求情况,从图片可以看出,DOMContentLoaded 时间为 2.67s,Load 时间为 3.45s,资源交换为 2.4MB. ...

最新文章

  1. ITRON系统使用方法
  2. python语音识别播放音乐_使用python语音识别播放和流式转录音频
  3. 【CentOS 7笔记24】,实验中发生的磁盘小故障#
  4. php科学计算库,科学计算库numpy基础
  5. linux服务器安装zookeeper本地项目远程连接
  6. 如何在ppt中生成柱状图_Excel表格数据如何生成柱状图等-EXCEL如何制作柱状图?...
  7. 炫酷背光文字html,PS制作背光放射出来的文字效果
  8. 【渝粤题库】陕西师范大学180102 广告策划 作业(高起专)
  9. php单引号的作用,PHP中单引号和双引号的区别与作用
  10. 保存SVM模型并调用
  11. Inmp架构搭建wordpress开源博客
  12. OLED显示图像和波形
  13. 2022-01-15:中心对称数 III。 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。 写一个函数来计算范围在 [low, high] 之间中心对称数的个
  14. No enclosing instance of type * is accessible. Must qualify the allocation with an enclosing instanc
  15. 【Procmon教程1】Procmon介绍
  16. Android -- GridLayoutManager
  17. 微信小程序--图片转base64
  18. github国内加速器
  19. 多个Excel文件如何根据条件进行汇总求和呢---多个文件根据条件汇总求和工具
  20. CentOS重启后resolv.conf被重置的解决方案

热门文章

  1. 恐龙快跑小程序对接流量主源码+前端 v5.0.4 全开源微擎框架
  2. get online 免费注册一级.online后缀的域名
  3. IIS7批量FTP客户端工具软件
  4. 3dsmax怎么添加uv坐标_YND科研绘图3Dsmax基础操作
  5. jquery监听向上向下滑动,滑动执行操作
  6. linux系统输入法怎么安装教程视频教程,Linux怎么安装中文输入法
  7. 高并发用redis还是mysql_高并发架构系列:Redis缓存和MySQL数据一致性方案详解
  8. 网站底部添加访客阅读次数总访问量在线人数代码
  9. Linux -Ubuntu安装 Tomcat
  10. 比较一下以“反射”和“表达式”执行方法的性能差异【转】