38 lines
1.6 KiB
JavaScript
38 lines
1.6 KiB
JavaScript
(function() { // 闭包
|
|
function load_script(xyUrl, callback) {
|
|
var head = document.getElementsByTagName('head')[0];
|
|
var script = document.createElement('script');
|
|
script.type = 'text/javascript';
|
|
script.src = xyUrl;
|
|
// 借鉴了jQuery的script跨域方法
|
|
script.onload = script.onreadystatechange = function() {
|
|
if ((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
|
|
callback && callback();
|
|
// Handle memory leak in IE
|
|
script.onload = script.onreadystatechange = null;
|
|
if (head && script.parentNode) {
|
|
head.removeChild(script);
|
|
}
|
|
}
|
|
};
|
|
// Use insertBefore instead of appendChild to circumvent an IE6 bug.
|
|
head.insertBefore(script, head.firstChild);
|
|
}
|
|
function translate(point, type, callback) {
|
|
var callbackName = 'cbk_' + Math.round(Math.random() * 10000); // 随机函数名
|
|
var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type
|
|
+ "&to=4&x=" + point.lng + "&y=" + point.lat
|
|
+ "&callback=BMap.Convertor." + callbackName;
|
|
// 动态创建script标签
|
|
load_script(xyUrl);
|
|
BMap.Convertor[callbackName] = function(xyResult) {
|
|
delete BMap.Convertor[callbackName]; // 调用完需要删除改函数
|
|
var point = new BMap.Point(xyResult.x, xyResult.y);
|
|
callback && callback(point);
|
|
}
|
|
}
|
|
|
|
window.BMap = window.BMap || {};
|
|
BMap.Convertor = {};
|
|
BMap.Convertor.translate = translate;
|
|
})();
|