在指定的位置添加元素

一、知识点总结:

1、在地图中指定位置添加元素:

                // 地图单击事件处理函数
				google.maps.event.addListener(map, 'click', function(event) {
					if (isAddedStatus) {
						addMarker(event.latLng);
					}
				});

			// 在指定的位置添加元素
			function addMarker(location) {
				var marker = new google.maps.Marker({
					position : location,
					map : map
				});
				markers.push(marker);
			}

2、添加自定义控件:

                // 添加一个自定义的控件,用来确定是否单击添加元素
				var addControlDiv = document.createElement('div');
				var addControl = new AddElementControl(addControlDiv, map);
				addControl.index = 1;
				map.controls[google.maps.ControlPosition.TOP_RIGHT].push(addControlDiv);

            // 添加元素控件的构造函数 
			function AddElementControl(controlDiv, map) {
                // 设置控件的样式
				controlDiv.style.padding = '5px';
				var controlUI = document.createElement('div');
				controlUI.style.backgroundColor = 'white';
				controlUI.style.borderStyle = 'solid';
				controlUI.style.borderWidth = '2px';
				controlUI.style.cursor = 'pointer';
				controlUI.style.textAlign = 'center';
				controlUI.title = '选择单击添加节点时,可以在地图上单击添加元素';
				controlDiv.appendChild(controlUI);

				// 添加一个checkbox
				var checkBox = document.createElement('input');
				checkBox.type = 'checkbox';
				checkBox.id = 'isAddElement';
				checkBox.style.verticalAlign = 'middle';
				controlUI.appendChild(checkBox);
				// 添加checkbox对应的文本框
				var controlText = document.createElement('label');
				controlText.htmlFor = 'isAddElement';
				controlText.innerHTML = '是否单击添加节点';
				controlText.style.fontFamily = 'Arial,sans-serif';
				controlText.style.paddingLeft = '4px';
				controlText.style.paddingRight = '4px';
				controlText.style.verticalAlign = 'middle';
				controlUI.appendChild(controlText);
                // 通过checkbox控制是否单击添加节点
				google.maps.event.addDomListener(checkBox, 'click', function() {
					isAddedStatus = checkBox.checked;
				});
			}

二、相关代码:

<!DOCTYPE html>
<html>
	<head>
		<!--
		学习在地图中添加图标,通过添加一个“点击添加元素”的CheckBox,当CheckBox为选中状态时,可以由用户在指定位置点击添加元素
		-->

		<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 markers = [];
			// 中心位置
			var centerLatLng = new google.maps.LatLng(22.653047, 114.062986);
			// 当isAddedStatus为true时,可以在页面中点击添加元素
			var isAddedStatus = false;
			
            // 添加元素控件的构造函数 
			function AddElementControl(controlDiv, map) {
                // 设置控件的样式
				controlDiv.style.padding = '5px';
				var controlUI = document.createElement('div');
				controlUI.style.backgroundColor = 'white';
				controlUI.style.borderStyle = 'solid';
				controlUI.style.borderWidth = '2px';
				controlUI.style.cursor = 'pointer';
				controlUI.style.textAlign = 'center';
				controlUI.title = '选择单击添加节点时,可以在地图上单击添加元素';
				controlDiv.appendChild(controlUI);

				// 添加一个checkbox
				var checkBox = document.createElement('input');
				checkBox.type = 'checkbox';
				checkBox.id = 'isAddElement';
				checkBox.style.verticalAlign = 'middle';
				controlUI.appendChild(checkBox);
				// 添加checkbox对应的文本框
				var controlText = document.createElement('label');
				controlText.htmlFor = 'isAddElement';
				controlText.innerHTML = '是否单击添加节点';
				controlText.style.fontFamily = 'Arial,sans-serif';
				controlText.style.paddingLeft = '4px';
				controlText.style.paddingRight = '4px';
				controlText.style.verticalAlign = 'middle';
				controlUI.appendChild(controlText);
                // 通过checkbox控制是否单击添加节点
				google.maps.event.addDomListener(checkBox, 'click', function() {
					isAddedStatus = checkBox.checked;
				});
			}
            // 地图初始化操作
			function initialize() {
				var mapDiv = document.getElementById('map-canvas');
				var mapOptions = {
					zoom : 12,
					center : centerLatLng
				};
				map = new google.maps.Map(mapDiv, mapOptions);
                // 添加一个自定义的控件,用来确定是否单击添加元素
				var addControlDiv = document.createElement('div');
				var addControl = new AddElementControl(addControlDiv, map);
				addControl.index = 1;
				map.controls[google.maps.ControlPosition.TOP_RIGHT].push(addControlDiv);
                // 地图单击事件处理函数
				google.maps.event.addListener(map, 'click', function(event) {
					if (isAddedStatus) {
						addMarker(event.latLng);
					}
				});
			}

			// 在指定的位置添加元素
			function addMarker(location) {
				var marker = new google.maps.Marker({
					position : location,
					map : map
				});
				markers.push(marker);
			}

			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、付费专栏及课程。

余额充值