`

快速的基于百度地图的业务对象标注功能实现(存档)

阅读更多

1.百度地图示例:http://openapi.baidu.com/map/examples.html

2.百度地图API:http://openapi.baidu.com/map/classReference.html

根据学习过程,通过示例结合API来学习,是比较快的一种方式。

过程:

1、新建map.jsp,例如可通过iframe把地图页面嵌入到业务系统中

2、在页面head中引入百度地图脚本

<script type="text/javascript" src="http://api.map.baidu.com/api?key=46ce9d0614bf7aefe0ba562f8cf87194&v=1.1&services=true">

 3、新建JSP页面,在body中加入两个DIV层,用于显示地图和标记按钮

<div style="width:100%;height:99%;border:1px solid gray" id="container">
</div>
<div id="floatId" style="z-index: 9998; position: absolute; width: 150px; display: block; height: 20px; word-break: break-all; top: 10px; right: 0px;" classNAme="bder_color3">
<input type="button" value="标注" onclick="marke()" style="BORDER-RIGHT: #7b9ebd 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7b9ebd 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde); BORDER-LEFT: #7b9ebd 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7b9ebd 1px solid"/>
</div>

 4、地图操作函数,如果业务对象已经有在地图上标注过,要传入的参数有标注状态、坐标、主键

<script type="text/javascript">
//获取地块表单的参数和URL的主键ID
var land_ismarke = parent.parent.document.getElementById("land_ismarke").value;
var land_x = parent.parent.document.getElementById("land_x").value;
var land_y = parent.parent.document.getElementById("land_y").value;
var unid = parent.ucapCommonFun.getUrlParameter("unid");

//初始化地图参数
var map = new BMap.Map("container"); // 创建Map实例
var point = new BMap.Point(120.148542, 30.325866); // 创建点坐标
map.centerAndZoom(point, 13); // 初始化地图,设置中心点坐标和地图级别。
map.enableScrollWheelZoom();   // 启用滚轮放大缩小。
map.enableKeyboard();    // 启用键盘操作。
map.addControl(new BMap.NavigationControl());               // 添加平移缩放控件
map.addControl(new BMap.ScaleControl());                    // 添加比例尺控件
map.addControl(new BMap.OverviewMapControl());              //添加缩略地图控件

//初始化**区边界点数据 add 2011-04-15 wzl
var polyline = new BMap.Polyline([
  new BMap.Point(120.19034, 30.352165),//世纪华联旁边的边界点
  new BMap.Point(120.162017, 30.317527),
  new BMap.Point(120.174413, 30.304167),
  new BMap.Point(120.161046, 30.294376),
  new BMap.Point(120.166436, 30.288389),
  new BMap.Point(120.167047, 30.279033),
  new BMap.Point(120.163669, 30.278783),
  new BMap.Point(120.14768, 30.299989),
  new BMap.Point(120.111137, 30.299194),
  new BMap.Point(120.107813, 30.320208),
  new BMap.Point(120.102153, 30.331695),
  new BMap.Point(120.092083, 30.337314),
  new BMap.Point(120.096683, 30.339121),
  new BMap.Point(120.105423, 30.344015),
  new BMap.Point(120.103501, 30.346555),
  
  new BMap.Point(120.112807, 30.349251),
  new BMap.Point(120.120748, 30.34361),
  new BMap.Point(120.130773, 30.345355),
  new BMap.Point(120.129812, 30.342441),
  new BMap.Point(120.13513, 30.349009),
  new BMap.Point(120.143754, 30.346656),
///////////////////////////////////////////////
  new BMap.Point(120.133145, 30.383659),
  new BMap.Point(120.134439, 30.389329),
  new BMap.Point(120.146045, 30.382133),
  new BMap.Point(120.156645, 30.383877),
  new BMap.Point(120.164298, 30.378051),
  new BMap.Point(120.174952, 30.376275),

  new BMap.Point(120.18478, 30.382055),
  new BMap.Point(120.198614, 30.398285),
  new BMap.Point(120.196817, 30.404826),
  new BMap.Point(120.203249, 30.404639),
  new BMap.Point(120.206555, 30.398565),
  new BMap.Point(120.223155, 30.39355),

  new BMap.Point(120.216041, 30.382678),
  new BMap.Point(120.222365, 30.370122),
  new BMap.Point(120.219293, 30.362768),
  new BMap.Point(120.206716, 30.355663),
  new BMap.Point(120.19034, 30.352165)
], {strokeColor:"blue", strokeWeight:4, strokeOpacity:0.5});
map.addOverlay(polyline);

var initPoint = new BMap.Point(land_x, land_y); // 创建点坐标
var initMarker = new BMap.Marker(initPoint); // 创建覆盖物
var land_name = parent.parent.document.getElementById("land_name").value; //表单值
var land_intro = parent.parent.document.getElementById("land_intro").value; //表单值

markCurrentLand(initPoint,initMarker);//初始化,展示地块窗口,并把地图中心位置移动到相应位置


/*
 * 展示地块窗口,并把地图中心位置移动到相应位置
 */
function markCurrentLand(point,marker){
	
	if(land_ismarke=="1"){
		//已成功标注到地图,显示信息到地图
		var sContent =
		"<h4 style='margin:0 0 5px 0;padding:0.2em 0'>"+land_name+"</h4>" + 
		"<img style='float:right;margin:4px' id='imgDemo' src='images/gongshuRMZFBuilding.jpg' width='139' height='104' title='**区'/>" +
		"<p style='margin:0;line-height:1.5;font-size:13px;text-indent:2em'>用地性质:出让面积:地块介绍:"+land_intro+"</p>" +
		"</div>";
		var infoWindow = new BMap.InfoWindow(sContent);  // 创建信息窗口对象
		map.addOverlay(marker); //添加图标

		setTimeout(function(){
			map.panTo(point); //移动到当前对象
			map.openInfoWindow(infoWindow, point);      // 打开信息窗口
		}, 1000);
		
				
		marker.addEventListener("click", function(){
        	this.openInfoWindow(infoWindow);
			//图片加载完毕重绘infowindow
		    document.getElementById('imgDemo').onload = function (){
			   infoWindow.redraw();
		    }
		});
	}
}


//点击标注,更新当前对象位置,通过UNID
function marke(){
	
		if(unid==""){parent.Ext.Msg.alert("提示", "请先保存表单!");return;}
	
		var myPushpin = new BMap.PushpinTool(map);   // 创建标注工具实例
		myPushpin.open(); //开启标注工具
		
		myPushpin.addEventListener("markend", function(e){//添加监听事件,点击标注新地块位置

			//通过UCAP应用平台,到数据库中更新位置,此处可用其它第三方AJAX框架来更新对象的三个字段值:坐标XY和状态;并返回结果
			var rs = parent.bdgUtil.synchronization("type=land&act=marke&unid="+unid+"&x="+e.marker.getPoint().lng+"&y="+e.marker.getPoint().lat);
			
			if(rs.markes==1){
				myPushpin.close(); //关闭标注工具
				map.closeInfoWindow(); //关闭信息窗
				
				e.marker.disableMassClear();//禁止覆盖物在map.clearOverlays方法中被清除

				map.clearOverlays(); //清除地图上所有覆盖物。

				e.marker.enableMassClear();//允许覆盖物在map.clearOverlays方法中被清除

				var nowPoint = new BMap.Point(e.marker.getPoint().lng, e.marker.getPoint().lat); // 创建点坐标
				markCurrentLand(nowPoint,e.marker); //展示地块窗口,并把地图中心位置移动到相应位置
				//parent.Ext.Msg.alert("提示", "标注成功!");
			}else{
				parent.Ext.Msg.alert("提示", "标注失败!");
				//刷新
			}
		});
		
}

</script>

 5、对应的项目目录

目录

 6、功能页面

表单标注功能

  • 大小: 11.9 KB
  • 大小: 77.7 KB
分享到:
评论

相关推荐

    基于VB的百度地图定位标注实例源码

    【标题】"基于VB的百度地图定位标注实例源码"是一个使用Visual Basic 6.0(VB6.0)开发的程序,它整合了百度地图API,能够在VB的窗体界面中显示实时的在线地图。这个实例的核心功能是允许用户在文本框中输入经纬度...

    百度地图自定义标注

    本文将深入探讨如何使用百度地图API实现自定义标注,帮助开发者们更好地展示地图上的特定位置信息。 首先,"百度地图自定义标注"指的是在百度地图上添加非默认的图标或者内容,以满足个性化需求。这通常涉及到对...

    百度地图api实现部分功能,根据多个坐标连成轨迹、坐标拾取、实现多个标注点并带信息窗口

    在本文中,我们将深入探讨如何使用百度地图API来实现一系列关键功能,包括连接多个坐标以形成轨迹、坐标拾取、以及创建带有信息窗口的多个标注点。这些功能在Web应用开发、JavaScript工具包、企业应用以及GIS/地图/...

    实现百度地图点击标注弹出窗口_地图定位.zip

    在本项目中,我们主要探讨如何在百度地图API中实现点击地图上的标注点后弹出信息窗口的功能。这个功能在很多应用中都很常见,比如地理信息系统、导航软件、位置服务等,它能帮助用户获取地图上特定位置的详细信息。...

    vue用BMap百度地图实现即时搜索功能

    在这个过程中,我们首先需要理解百度地图API的使用,以及如何在Vue项目中集成BMap百度地图API来实现即时搜索功能。以下是详细知识点: 1. 百度地图API的申请和使用 要使用百度地图的即时搜索功能,开发者需要先在...

    excle数据手动实现的百度地图标注

    python实现直接读取excle数据实现的百度地图标注:https://blog.csdn.net/weixin_41290949/article/details/120638695 项目说明 百度地图标注数据量不大,希望直接读取excle生成标注;同时会有修改、编辑的需求。 ...

    【百度地图】坐标标注控件

    "【百度地图】坐标标注控件"是针对特定项目需求自定义开发的一种功能组件,主要实现了以下三个关键功能: 1. **根据IP加载用户所在城市**:这个功能利用了百度地图API的IP定位服务。通过获取用户的IP地址,API能够...

    基于百度地图API的地图实现

    本文将深入探讨如何基于百度地图API实现地图功能,以及在实际开发中可能遇到的关键知识点。 首先,百度地图API是百度提供的一套面向开发者的服务,它允许开发者在自己的网页或移动应用中集成地图展示、定位、路线...

    百度地图api实现运动轨迹、坐标拾取、多点标注并显示信息窗体

    开发者可以通过阅读和理解这些文件,学习如何利用百度地图API实现上述功能,进而将其应用到自己的项目中,提升用户体验和交互性。对于初学者来说,这是一个很好的学习资源,能够帮助他们掌握地图API的使用方法和技巧...

    百度地图在范围内标注点

    在百度地图中,我们可以利用其提供的JavaScript API来实现标注功能。 在“范围内标注”这个场景下,我们可能需要根据一定的地理范围,比如行政区划、自定义边界或者特定半径内的区域,批量显示标注。这涉及到几个...

    百度地图在范围内进行标注

    在Android开发中,百度地图SDK是一个强大的工具,它允许开发者集成地图功能,包括定位、路径规划、地图标注等。本文将详细讲解如何利用百度地图SDK实现在特定范围内进行标注,并探讨超出范围时的处理策略。 首先,...

    百度地图范围内标注

    "百度地图范围内标注"涉及到了在百度地图上定位、标记特定区域或者对象的技术。这个过程可以帮助用户清晰地看到地图上的特定地点、兴趣点或者一系列地理坐标,从而提供导航、规划路线或者数据分析等服务。下面将详细...

    百度地图标注插件

    【百度地图标注插件】是一种基于地图服务的实用工具,主要功能是允许用户在百度地图上进行精确的标记和定位。这款插件适用于多种场景,包括但不限于地理信息标注、商业选址分析、路线规划等,通过坐标、地址、城市或...

    地图多个标注点添加百度样式检索窗口

    本文将深入探讨如何在百度地图API上实现多个标注点的添加,并利用特定样式创建检索窗口,提升用户体验。首先,我们需要了解百度地图API的基础知识。 百度地图API是百度提供的一项服务,允许开发者在网页或应用程序...

    实现网上地图标注

    理解并掌握以上步骤,你就能在VS2005和SqlServer2000环境下成功实现基于百度地图API的网上地图标注功能。这只是一个基础示例,你可以根据具体需求进行扩展,例如添加多图层、热力图、轨迹绘制等功能。

    基于百度地图实现的定位功能_地图定位.zip

    总结起来,基于百度地图实现定位功能主要包括以下几个步骤: 1. 引入百度地图JavaScript API并获取API密钥。 2. 创建地图实例并设置初始显示。 3. 使用`BMap.Geolocation`对象获取用户位置。 4. 在地图上展示定位...

    百度地图类库 标注管理器.zip

    使用这个类库,开发者可以轻松应对各种复杂的地图应用场景,例如构建地图应用、实现地理信息系统(GIS)功能,或者在数据分析项目中可视化地理位置数据。总的来说,"百度地图类库 - 标注管理器" 是一款强大的工具,...

    基于百度地图API的web'开发

    在基于百度地图API的Web开发中,开发者可以利用Baidu Maps JavaScript API来构建丰富的地图应用。这个API提供了各种功能,包括地图展示、定位、标注、路线规划、地理编码、覆盖物管理等,使得Web应用程序能够无缝...

    基于ECharts & 百度地图的热力图展示设计与实现

    百度地图提供了一个JavaScript SDK,可以用于在网页上显示地图、添加标注、实现地图操作等。在ECharts中集成百度地图,我们需要使用ECharts的扩展插件`bmap`。这个插件允许我们在ECharts图表中嵌入百度地图,从而...

Global site tag (gtag.js) - Google Analytics