休闲

asp 百度地图引用

时间:2010-12-5 17:23:32  作者:热点   来源:百科  查看:  评论:0
内容摘要:2008年我还在用ASP写一个物流跟踪系统,客户突然要求在地图上显示货车位置。那时候百度地图刚开放JavaScript API,网上资料少得可怜,官方文档读起来像天书。折腾了三天,最后发现核心就三行代

2008年我还在用ASP写一个物流跟踪系统,度地客户突然要求在地图上显示货车位置。图引那时候百度地图刚开放JavaScript API,度地网上资料少得可怜,图引官方文档读起来像天书。度地折腾了三天,图引最后发现核心就三行代码——注册密钥、度地创建地图、图引标注坐标。度地

ASP这边其实不复杂。图引百度地图的度地JavaScript API跑在浏览器端,和ASP的图引VBScript或C#代码完全不冲突。你需要的度地只是一个动态生成JavaScript变量的过程。比如数据库里存着经纬度,图引ASP用Response.Write输出一段var point = new BMap.Point(116.404,度地 39.915);,前端就能直接用了。

具体到实现,页面结构大概是这样的。ASP文件里先放一个div容器,给它一个id,比如mapContainer,设好宽度高度。然后引百度地图的脚本库:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> 

注意那个ak参数,得去百度地图开放平台申请。当年没这玩意,随便用,现在必须实名注册,个人开发者也给免费配额,够用。

接下来是ASP输出数据的地方。我习惯在<script>标签里直接写var markers = <%= rsData %>,其中rsData是服务器端拼好的JSON字符串。用Recordset循环读出数据库里的货车ID、经度、纬度,拼成[{ "id": "001", "lng": 116.4, "lat": 39.9 }, ...]这种格式。拼字符串时注意别漏引号,当年我吃过这个亏,排错排了一下午,最后发现是坐标字段里多了个空格。

前端拿到markers数组后,遍历调用BMap.Marker往地图上撒点。想加点交互效果就绑定click事件,弹个信息窗口显示货车编号。这一步纯粹是JavaScript的活,ASP已经功成身退。

有个坑必须提——百度地图API的加载是异步的。你要是把初始化函数写在外层脚本里,可能地图还没加载完就执行了,报错BMap is not defined。解决办法是等window.onload后再初始化,或者用API自带的load事件。我见过不少新手栽在这上面,其实官方示例里就有window.onload = init的写法,照抄就行。

还有编码问题。ASP页面如果是GB2312编码,百度地图的JavaScript文件是UTF-8,中文注释或者弹窗文字会乱码。最省事的办法是ASP页面也统一用UTF-8,在文件头部加<%@ Language="VBScript" CodePage=65001 %>,再把文件另存为UTF-8格式。搞不定的话,弹窗里干脆别写中文,用英文或者拼音。

现在回头看,ASP配百度地图真没什么高深技术,本质就是个动态数据输出器。倒是那些年踩过的坑——引号嵌套、编码混乱、异步加载——比API文档本身更有价值。后来项目改用PHP,再后来转前端,但ASP那套思路一直有用:后端只管吐数据,前端负责渲染,边界清晰,各司其职。

要是你手头还有老ASP项目要加地图功能,别慌。先确认服务器能跑ASP,然后按上面步骤走一遍,半小时能出效果。百度地图API版本更新过好几轮,但基础的BMap对象用法没大变,旧代码改改密钥就能跑。真遇到问题,把浏览器F12的控制台报错发到技术论坛,比翻文档快多了。

最近更新
热门排行
copyright © 2026 powered by 烟消火灭网   sitemap