在指定位置添加连线

一、知识点总结:

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>

三、运行效果截图:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值