整理毕设-百度地图添加可拖拽点+信息窗口提交表单

实现效果:

点击地图某一处添加一个可拖拽点并弹出信息窗口,可在该窗口展示一个表单。


实现

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
	<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" />
	<style type="text/css">
		html{height:100%}
		body{height:100%;margin:0px;padding:0px}
		#allmap{width: 100%;height: 100%;}
		#winContent{width:950px}
		.second,.third,.forth,.fifth{
            display: none;
        }
        #cont{
        	width: 100%;height: 100%;
        }
        #sub{width: 100px;margin-top: 25px}
	</style>
	<script type="text/javascript" src="/gradesign/js/jquery-3.3.1.min.js"></script>
	<script type="text/javascript" src="/gradesign/js/bootstrap.min.js"></script>
	<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=XXX"></script>
	<script type="text/javascript" src="/gradesign/js/bootstrap-datetimepicker.min.js" charset="UTF-8"></script>
	<script type="text/javascript" src="/gradesign/js/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
	<title>BaiduMap</title>
</head>
<body>
	<div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div>
	<div id="cont">
		<div id="allmap"></div>
	</div>
	
</body>

<script type="text/javascript">
	$(function(){
	});
	// 百度地图API功能
	var map = new BMap.Map("allmap");    // 创建Map实例
	var gc = new BMap.Geocoder();
	// 初始化地图,设置中心点坐标和地图级别
	map.centerAndZoom(new BMap.Point(118.723572,32.211126), 15);  
	//鼠标放大缩小地图
	map.enableScrollWheelZoom(true)
	//地图样式
	var mapStyle={style:"mapbox"};
	map.setMapStyle(mapStyle);
	//map.setCurrentCity("南京"); // 仅当设置城市信息时,MapTypeControl的切换功能才能可用   
	//浏览器定位
	var geolocation = new BMap.Geolocation();
	geolocation.getCurrentPosition(function(r){
		if(this.getStatus() == BMAP_STATUS_SUCCESS){
			var pt = r.point;
			x = r.point.lng;
		    y = r.point.lat;
			gc.getLocation(pt,function(rs){
				var addComp = rs.addressComponents;//获取省市区号
				map.centerAndZoom(addComp.city, 13);  
				map.setCurrentCity(addComp.city);
			});
			
		}
		else{
			alert(this.getStatus());
			alert("系统错误,请联系管理员");
		}
	},{enableHightAccuracy:true});
	
	//定义一个控件类
	function ZoomControl(){
		this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;		//anchor表示控件停靠在地图的哪个角
		this.defaultOffset = new BMap.Size(100,20);		//提供偏移量,用来指示控件距离地图边界相隔多少像素。 
	} 
	//通过JS的prototype属性继承BMap.Control
	ZoomControl.prototype = new BMap.Control();
	//自定义控件必须实现自己的init方法,并将控件的DOM元素返回
	//该方法中创建div元素作为控件容器,并添加到地图容器中
	ZoomControl.prototype.initialize = function(map){
		//创建一个DOM元素
		var div = document.createElement("div");
		div.innerHTML = '<div class="col-sm-3"><div class="input-group"><input type="text" id="address" class="form-control" placeholder="搜索地点" /><a class="clear"></a>'+
		'<span class="input-group-btn"><button class="btn btn-default" type="button" οnclick=" choose()">GO!</button></span></div></div>';
		map.getContainer().appendChild(div);
		return div;
	}
	//创建控件
	var myZoom = new ZoomControl();
	//添加到地图中
	map.addControl(myZoom);
	map.addControl(new BMap.NavigationControl());
	map.addControl(new BMap.OverviewMapControl());
	//百度地图自动完成搜索
	var ac = new BMap.Autocomplete({
		"input" : "address",
		"location" : map
	});
 	
	
	var myValue;
	//点击下拉列表中的事件
	function choose(){
		myValue = $("#address").val();
		function myFun(){
			var pp = local.getResults().getPoi(0).point;
			map.centerAndZoom(pp,18);
			//map.addOverlay(new BMap.Marker(pp));		//添加标注
		};
		var local = new BMap.LocalSearch(map,{
			onSearchComplete : myFun
		});
		local.search(myValue);
	}
	ac.addEventListener("onconfirm",function(e){
		var _value = e.item.value;
		myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
		G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
		setPlace();
	});
	var lnt = "";var lat = "";
	var address = "";
	//点击地图添加可拖拽点
	map.addEventListener("onclick",function(e){
		var content = '<div id="winContent">'+
		'<form id="payModalForm"><div class="row"><div class="form-group col-md-3" style="display:none">'+
		'<label for="id">ID</label><input type="text" class="form-control" id="id" placeholder="id"/>'+
		'</div><div class="form-group col-md-3"><label for="payItem">支出项目</label>'+
		'<input type="text" class="form-control" id="payItem" placeholder="支出项目"/>'+
		'</div><div class="form-group col-md-3"><label for="datetimepicker">支出时间</label>'+
		'<div class="input-group date form_date" id="datetimepicker" data-date-format="yyyy-mm-dd"  data-link-format="yyyy-mm-dd" οnclick="pickerShow()">'+
		'<input type="text" class="form-control" id="payDate" placeholder="支出时间" />'+
		'<span class="input-group-addon" οnclick="pickClean()"><span class="glyphicon glyphicon-remove" ></span></span>'+
		'</div></div><div class="form-group col-md-3"><label for="payMoney">支出金额</label>'+
        '<input type="text" id="payMoney" class="form-control" placeholder="支出金额"/></div></div>'+
     	'<div class="row"><div class="form-group col-md-3" ><label for="payMember">支出人</label><select class="form-control" id="payMember" >'+
       	'<option th:each="memberName : ${nameList}" th:text="${memberName.membername}"></option><option>所有成员</option>'+
     	'</select></div><div class="form-group col-md-3"><form role="form">'+
       	'<label for="payType">支出类型</label><select class="form-control" id="payType" οnchange="typeChange()">'+
        '<option>日常支出</option><option>投资支出</option><option>意外支出</option><option>消费支出</option>'+
        '<option>其他支出</option></select></form></div>'+
     	'<div id="first" class="form-group payDiv first col-md-3"><form role="form">'+
        '<label class="payTypeLabel">日常支出</label><select class="payTypeDetail form-control select-first" id="payCommonDetail">'+
        '<option>---请选择日常支出---</option><option>饮食</option><option>服装</option><option>水电</option>'+
        '<option>交通</option><option>通讯</option><option>赡养</option><option>其他</option></select></form></div>'+
    	'<div id="second" class="form-group payDiv second col-md-3"><form role="form"><label class="payTypeLabel">投资支出</label>'+
        '<select class="payTypeDetail form-control select-second" id="payInvestDetail"><option>---请选择投资支出---</option>'+
        '<option>股票</option><option>外汇</option><option>基金</option><option>彩票</option><option>债券</option><option>保险</option>'+
        '<option>其他</option></select></form></div><div id="third" class="form-group payDiv third col-md-3"><form role="form">'+
        '<label class="payTypeLabel">意外支出</label><select class="payTypeDetail form-control select-second" id="payAccidentDetail">'+
        '<option>---请选择意外支出---</option><option>罚单</option><option>医疗保健</option><option>其他</option></select></form></div>'+
        '<div id="forth" class="form-group payDiv forth col-md-3"><form role="form"><label class="payTypeLabel">消费支出</label>'+
        '<select class="payTypeDetail form-control select-second" id="payConsumeDetail"><option>---请选择消费支出---</option><option>购物</option>'+
        '<option>旅游</option><option>居住</option><option>交通通信</option><option>文娱教育</option><option>其他</option></select></form>'+
        '</div><div id="fifth" class="form-group payDiv fifth col-md-3"><form role="form"><label class="payTypeLabel">其他支出</label>'+
        '<input class="payTypeDetail form-control select-third" type="text" id="payOtherDetail" placeholder="请输入支出详情"/></form></div></div>'+
        '<div class="row"><div class="form-group col-md-3"><label for="payTip">支出备注</label><input type="text" id="payTip" class="form-control" placeholder="备注"/>'+
        '</div><div class="form-group col-md-3"><label for="address">地址</label><input type="text" id="address" class="form-control" placeholder="地址"/></div>'+
        '<div class="form-group col-md-3"><button type="button" id="sub" class="btn btn-primary" οnclick="submit()">提交</button></div></div></form></div>';
        var scontent = "";
		x = e.point.lng;
		y = e.point.lat;
		lng = x;
		lat = y;
		point = new BMap.Point(x,y);
		marker = new BMap.Marker(point);	// 创建标注
		map.centerAndZoom(point,18);
		map.clearOverlays();	//清除地图上所有覆盖物
		map.addOverlay(marker);	//将标注添加到地图中
		marker.enableDragging();	//不可拖拽marker.disableDragging();
		//给标注点添加窗口
		var infoWindow = new BMap.InfoWindow(content);	//创建信息窗口对象
		marker.openInfoWindow(infoWindow);
		var geoc = new BMap.Geocoder();    
		geoc.getLocation(point,function(rs){
			var allPois = rs.surroundingPois;
			address = allPois[0].title;
			$("#address").val(address);
		})
		map.centerAndZoom(point,18);
	});
	x = e.point.lng;
	y = e.point.lat;
	lng = x;
	lat = y;
	point = new BMap.Point(x,y);
	map.centerAndZoom(point,18);
	function G(id){
		return document.getElementById(id);
	};
	function setPlace(){
		function myFun(){
			var pp = local.getResults().getPoi(0).point;
			map.centerAndZoom(pp,18);
		};
		var local = new BMap.LocalSearch(map,{
			onSearchComplete : myFun
		});
		local.search(myValue);
	}
	function pickerShow() {
		$('#payDate').datetimepicker({
			language : 'zh-CN',
			weekStart : 1,
			todayBtn : 1,
			autoclose : 1,
			todayHighlight : 1,
			startView : 2,
			minView : 2,
			forceParse : 0,
			todayHighlight : true
		});
	}
	function pickClean() {
		$('#payDate').val("");
	};
</script>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值