这是到新公司以后接到的第一个任务(测试任务),嘿嘿,第一次画地图,一开始整个人都方了。。。方过了一个周末,还好两天差不多就弄出来了。感谢互联网啊,让我这种渣渣得以继续生存,但是也意识到自己编码能力真的需要努力。废话不多说了,来上需求和实现代码吧。
【需求】
通过给定的经纬度坐标点来自定义规划线路,要求,道路中有方向指向标志,如图:
【思路】
1.渲染地图进来
2.在地图上选取你要的坐标点,并在地图上打上坐标点
3.根据获取的坐标点经纬度连线,并选择箭头属性为true
【代码】
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>打点画线</title>
<link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
<style>
.marker {
color: #ff6600;
padding: 4px 10px;
border: 1px solid #fff;
white-space: nowrap;
font-size: 12px;
font-family: "";
background-color: #0066ff;
}
</style>
<script src="http://webapi.amap.com/maps?v=1.3&key=amapA8fIRfAbK"></script>
<script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
</head>
<body>
<div id="container"></div>
<div class="button-group">
<input type="button" class="button" value="添加点标记覆盖物" id="addMarker"/>
<input type="button" class="button" value="更新点标记覆盖物" id="updateMarker"/>
<input type="button" class="button" value="删除点标记覆盖物" id="clearMarker"/>
<input type="button" class="button" value="绘制轨迹" id="drawLine" />
</div>
<script>
var marker, map = new AMap.Map("container", {
resizeEnable: true,
center: [116.397428,39.90923],
zoom: 13
});
//AMap.event.addListener(map,"complete",completeEventHandler);//加载完成后
AMap.event.addListener(map,'click',getLnglat); //点击获取坐标事件
AMap.event.addDomListener(document.getElementById('addMarker'), 'click', function() {
addMarker();
}, false);
AMap.event.addDomListener(document.getElementById('updateMarker'), 'click', function() {
marker && updateMarker();
}, false);
AMap.event.addDomListener(document.getElementById('clearMarker'), 'click', function() {
if (marker) {
marker.setMap(null);
marker = null;
}
}, false);
AMap.event.addDomListener(document.getElementById('drawLine'),'click',function(){
drawLine();
},false);
//获取坐标
function getLnglat(e){
var x = e.lnglat.getLng();
var y = e.lnglat.getLat();
alert(x+","+y);
};
// 实例化点标记
function addMarker() {
if (marker) {
return;
}
marker = new AMap.Marker({
icon: "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
position: [116.397428,39.90923]
});
marker.setMap(map);
}
function updateMarker() {
// 自定义点标记内容
var markerContent = document.createElement("div");
// 点标记中的图标
var markerImg = document.createElement("img");
markerImg.className = "markerlnglat";
markerImg.src = "http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png";
markerContent.appendChild(markerImg);
// 点标记中的文本
var markerSpan = document.createElement("span");
markerSpan.className = 'marker';
markerSpan.innerHTML = "end";
markerContent.appendChild(markerSpan);
marker.setContent(markerContent); //更新点标记内容
marker.setPosition([116.397428,39.90923]); //更新点标记位置
}
//轨迹绘制
//地图图块加载完毕后执行函数
function drawLine(){
marker = new AMap.Marker({
map:map,
//draggable:true, //是否可拖动
position:new AMap.LngLat(116.396913,39.908111),//基点位置
offset:new AMap.Pixel(-13,-27), //相对于基点的位置
autoRotation:true
});
marker = new AMap.Marker({
map:map,
//draggable:true, //是否可拖动
position:new AMap.LngLat(116.420087,39.908374),//基点位置
offset:new AMap.Pixel(-13,-27), //相对于基点的位置
autoRotation:true
});
marker = new AMap.Marker({
map:map,
//draggable:true, //是否可拖动
position:new AMap.LngLat(116.432303,39.909320),//基点位置
offset:new AMap.Pixel(-13,-27), //相对于基点的位置
autoRotation:true
});
marker = new AMap.Marker({
map:map,
//draggable:true, //是否可拖动
position:new AMap.LngLat(116.434679,39.908769),//基点位置
offset:new AMap.Pixel(-13,-27), //相对于基点的位置
autoRotation:true
});
marker = new AMap.Marker({
map:map,
//draggable:true, //是否可拖动
icon:"http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png",//终点红色
position:new AMap.LngLat(116.434335,39.924568),//基点位置
//title:"116.434335,39.924568",
offset:new AMap.Pixel(-13,-27), //相对于基点的位置
autoRotation:true
});
//实例化经纬度
//起点
var lngX = 116.396913;
var latY = 39.908111;
lineArr = new Array();
lineArr.push(new AMap.LngLat(lngX,latY));
lineArr.push(new AMap.LngLat(116.420087,39.908374));//第二个点
lineArr.push(new AMap.LngLat(116.432303,39.909320));//第三个点
lineArr.push(new AMap.LngLat(116.434679,39.908769));//第四个点
lineArr.push(new AMap.LngLat(116.434335,39.924568));//第五个点
//绘制轨迹
var polyline = new AMap.Polyline({
map:map,
path:lineArr,
strokeColor:"#0066ff",//线颜色
strokeOpacity:1,//线透明度
strokeWeight:5,//线宽
strokeStyle:"solid",//线样式
showDir: true//是否显示箭头
});
//显示坐标
/* function showLnglat(){
var infoBox = [];
info.push("116.434335,39.924568")
InfoWindow.open(map,new AMap.LngLat(116.434335,39.924568));
}*/
map.setFitView();
}
</script>
</body>
</html>
【效果图】
【参考】
1.酸奶小妹:有一系列入门实用教程案例。http://www.cnblogs.com/milkmap/p/3727842.html
2.打点画线重点代码块。 http://www.myexception.cn/internet/1695984.html