最近研究利用百度地图API集成开发,在遇到要将火星坐标转换成百度坐标的时候,发现直接复制粘贴百度官网原程序无法运行。
之后看了下代码,将源程序中的</html>放到程序末尾,并修改头文件,再次运行成功得到坐标转换结果,修改后的程序如下(需要替换自己的ak)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
#allmap {width: 100%;height:100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
body, html {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
html {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的ak"></script>
<title>起点和终点之间的GPS轨迹运动</title>
</head>
<body>
<div id="allmap"></div>
</body>
//------------------------以下使用官网源程序块
<script type="text/javascript">
// 百度地图API功能
//谷歌坐标
var x = 116.32715863448607;
var y = 39.990912172420714;
var ggPoint = new BMap.Point(x,y);
//地图初始化
var bm = new BMap.Map("allmap");
bm.centerAndZoom(ggPoint, 15);
bm.addControl(new BMap.NavigationControl());
//添加谷歌marker和label
var markergg = new BMap.Marker(ggPoint);
bm.addOverlay(markergg); //添加谷歌marker
var labelgg = new BMap.Label("未转换的谷歌标注(错误)",{offset:new BMap.Size(20,-10)});
markergg.setLabel(labelgg); //添加谷歌label
//坐标转换完之后的回调函数
translateCallback = function (data){
if(data.status === 0) {
var marker = new BMap.Marker(data.points[0]);
bm.addOverlay(marker);
var label = new BMap.Label("转换后的百度标注(正确)",{offset:new BMap.Size(20,-10)});
marker.setLabel(label); //添加百度label
bm.setCenter(data.points[0]);
}
}
setTimeout(function(){
var convertor = new BMap.Convertor();
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 3, 5, translateCallback)
}, 1000);
</script>
</html> //移动源程序的</html>至此