一、知识点总结:
1、添加连线:
var polyOptions = {
strokeColor : '#0000FF',
strokeOpacity : 1.0,
strokeWeight : 3
};
poly = new google.maps.Polyline(polyOptions);
poly.setMap(map);
2、获取连经的路径并添加新的连线点:
var path = poly.getPath();
path.push(event.latLng);
<!DOCTYPE html>
<html>
<head>
<!--
学习在地图中添加连线,通过添加“开始记录”和“结束记录”的按钮,控制是否添加连线
-->
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>添加连线</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
// 地图对象
var map;
// 当前操作的连线数组
var poly = [];
// 中心位置
var centerLatLng = new google.maps.LatLng(22.653047, 114.062986);
// 当isAddedStatus为true时,可以在页面中点击添加连线
var 当isAddedStatus = false;
// 添加元素控件的构造函数
function CunstomerControl(controlDiv, map) {
// 设置控件的样式
controlDiv.style.padding = '5px';
// 开始连线
var startPolyUI = document.createElement('div');
startPolyUI.style.backgroundColor = 'white';
startPolyUI.style.borderStyle = 'solid';
startPolyUI.style.borderWidth = '2px';
startPolyUI.style.cursor = 'pointer';
startPolyUI.style.textAlign = 'center';
startPolyUI.title = '开始添加连线,您可以在地图上点击添加连线';
controlDiv.appendChild(startPolyUI);
var startPolyText = document.createElement('div');
startPolyText.style.fontFamily = 'Arial,sans-serif';
startPolyText.style.fontSize = '12px';
startPolyText.style.paddingLeft = '4px';
startPolyText.style.paddingRight = '4px';
startPolyText.innerHTML = '开始连线';
startPolyUI.appendChild(startPolyText);
// 停止连线
var stopPolyUI = document.createElement('div');
stopPolyUI.style.marginTop = '4px';
stopPolyUI.style.backgroundColor = 'white';
stopPolyUI.style.borderStyle = 'solid';
stopPolyUI.style.borderWidth = '2px';
stopPolyUI.style.cursor = 'pointer';
stopPolyUI.style.textAlign = 'center';
stopPolyUI.title = '停止添加连线,您可以停止在地图上点击添加连线';
controlDiv.appendChild(stopPolyUI);
var stopPolyText = document.createElement('div');
stopPolyText.style.fontFamily = 'Arial,sans-serif';
stopPolyText.style.fontSize = '12px';
stopPolyText.style.paddingLeft = '4px';
stopPolyText.style.paddingRight = '4px';
stopPolyText.innerHTML = '停止连线';
stopPolyUI.appendChild(stopPolyText);
// 开始连线操作
google.maps.event.addDomListener(startPolyUI, 'click', function() {
isAddedStatus = true;
var polyOptions = {
strokeColor : '#0000FF',
strokeOpacity : 1.0,
strokeWeight : 3
};
poly = new google.maps.Polyline(polyOptions);
poly.setMap(map);
});
// 停止连线操作
google.maps.event.addDomListener(stopPolyUI, 'click', function() {
isAddedStatus = false;
alert("您已经选择停止连线");
});
}
// 地图初始化操作
function initialize() {
var mapDiv = document.getElementById('map-canvas');
var mapOptions = {
zoom : 12,
center : centerLatLng
};
map = new google.maps.Map(mapDiv, mapOptions);
// 添加一个自定义的控件,用来确定是否单击添加元素
var customerControlDiv = document.createElement('div');
var addControl = new CunstomerControl(customerControlDiv, map);
addControl.index = 1;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(customerControlDiv);
// 地图单击事件处理函数
google.maps.event.addListener(map, 'click', addLatLng);
}
function addLatLng(event) {
if (isAddedStatus) {
var path = poly.getPath();
path.push(event.latLng);
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas">
</div>
</body>
</html>
三、运行效果截图: