前几天客户提需求要做一个在网站首页嵌入百度地图的功能,在网上找了找资料 现将代码保存至此以便以后参考,有同样需求的同学,可以参考下,另使用地图前必须要申请一个Key要到百度地图开发者中心里面去申请下。
第一步:先引入百度地图API
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=QuNhO4DuMmsxfm1H4hof5QmE"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js"></script>
还需要引入Juqery组件 这里我就不写了!
第二步:
jsp页面代码:
<!-- 地图模块 -->
<div class="main_l3 border" style="height:420px;width: 766px;">
<div class="box_t" align="left"><h3>   盟市网站群</h3></div>
<div align="center" id="map" style="height: 386px;width: 765px;">
</div>
</div>
第三步:
JS代码:
var map;
//标注点数组
var markerArr = [{title:"呼和浩特",content:"呼和浩特市",point:"111.693696|40.839454",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}
];
//创建和初始化地图函数:
//这里异步从后台获取坐标点的数据(后台可以维护坐标点,坐标具体的经度纬度可以使用百度地图坐标拾取系统来查找)。
function initMap(){
$.ajax({
type: "POST",
url: "${ctx}/CsAjax.do",
data: "method=getMapCoordinateListForMap&p_index=${p_index}",
//data: "method=listAjax&city",
dataType: "json",
error: function(request, settings) {alert("数据加载请求失败!"); },
success: function(list) {
markerArr=list;
createMap();//创建地图
setMapEvent();//设置地图事件
//addMapControl();//向地图添加控件
addMarker();//向地图中添加marker
addMapControl();
}
});
}
function createMap(){
//地图功能
//百度地图API功能
map = new BMap.Map("map"); // 创建Map实例
map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
if(markerArr.length>0){
var json = markerArr[0];
var p0 = json.point.split("|")[0];
var p1 = json.point.split("|")[1];
point = new BMap.Point(p0,p1);
map.centerAndZoom(point, 8); // 初始化地图,设置中心点坐标和地图级别
map.setCurrentCity(json.title); // 设置地图显示的城市 此项是必须设置的
}else{
map.centerAndZoom(new BMap.Point(111.667825,40.815435), 6); // 初始化地图,设置中心点坐标和地图级别
map.setCurrentCity("呼和浩特"); // 设置地图显示的城市 此项是必须设置的
}
//以下是设置地图的显示范围 可以不用
//var strictBounds=new Bmap.Bounds(new BMap.Point(97.2161,37.4161),new BMap.Point(126.0702,53.3869));//sw西南,ne东北
var b = new BMap.Bounds(new BMap.Point(116.027143, 39.772348),new BMap.Point(116.832025, 40.126349));
//var strictBounds=map.getBounds();
try {
BMapLib.AreaRestriction.setBounds(map, b);
} catch (e) {
alert(e);
}
map.addEventListener("dragend", function(){
if(strictBounds.containsPoint(map.getCenter()))return;
var c=map.getCenter();
x=c.lng,
y=c.lat,
maxX=strictBounds.getNorthEast().lng,
maxY=strictBounds.getNorthEast().lat,
minX=strictBounds.getSouthWest().lng,
minY=strictBounds.getSouthWest().lat;
if (x < minX) x = minX;
if (x > maxX) x = maxX;
if (y < minY) y = minY;
if (y > maxY) y = maxY;
map.centerAndZoom(new BMap.Point(x,y),map.getZoom());
});
//以上是设置地图的显示范围 可以不用 我这里没有使用成功 代码先放上面以后需要再行研究一下
}
//地图事件设置函数:
function setMapEvent(){
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
}
//地图控件添加函数:
function addMapControl(){
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
map.addControl(ctrl_nav);
//向地图中添加缩略图控件
var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});
map.addControl(ctrl_ove);
//向地图中添加比例尺控件
//var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
//map.addControl(ctrl_sca);
}
//创建marker
function addMarker(){
var myIcon = new BMap.Icon("${ctx}/images/b_green.png",new BMap.Size(20, 32));
var myIcon2 = new BMap.Icon("${ctx}/images/b_red.png",new BMap.Size(20, 32));
var point = new Array(); //存放标注点经纬信息的数组
var marker = new Array(); //存放标注点对象的数组
//var info = new Array(); //存放提示信息窗口对象的数组
var iw = new Array();
for(var i=0;i<markerArr.length;i++){
var json = markerArr[i];
var p0 = json.point.split("|")[0];
var p1 = json.point.split("|")[1];
point[i] = new BMap.Point(p0,p1);
//var iconImg = createIcon(json.icon);
if(json.p_index==150100){
marker[i] = new BMap.Marker(point[i],{icon:myIcon2});
}else{
marker[i] = new BMap.Marker(point[i],{icon:myIcon});
}
//marker[i].setAnimation(BMAP_ANIMATION_BOUNCE);//跳动的动画
var opts = {
title: json.title,
maxWidth: 80,
height: 0
}
iw[i] = new BMap.InfoWindow("",opts);
//var infoWindow = new BMap.InfoWindow(""); //创建信息窗口
//var label = new BMap.Label(json.title,{"offset":new BMap.Size(20,32)});
//marker.setLabel(label);
//显示marker的title,marker多的话可以注释掉
var label = new window.BMap.Label("<a href=# target='_blank'>"+json.title+"</a>", { offset: new window.BMap.Size(20, -10) });
marker[i].setLabel(label);
map.addOverlay(marker[i]);
}
}
//创建InfoWindow
function createInfoWindow(i){
var json = markerArr[i];
//var iw = new BMap.InfoWindow("<b class='iw_poi_title' title='" + json.title + "'>" + json.title + "</b><div class='iw_poi_content'>"+json.content+"</div>");
var iw = new BMap.InfoWindow("");
return iw;
}
//创建一个Icon
function createIcon(json){
var icon = new BMap.Icon("http://app.baidu.com/map/images/us_mk_icon.png", new BMap.Size(json.w,json.h),{imageOffset: new BMap.Size(-json.l,-json.t),infoWindowOffset:new BMap.Size(json.lb+5,1),offset:new BMap.Size(json.x,json.h)})
return icon;
}
//最后别下面这行代码 页面加载好后调用initMap方法初始化地图控件
$(document).ready(function(){
initMap();
});
第四步:
台java代码获取坐标后封装成json格式
我这里后台用的是struts
public ActionForward getMapCoordinateListForMap(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// JSONObject result = new JSONObject();
String p_index = request.getParameter("p_index");
if (StringUtils.isBlank(p_index)) {
p_index = "150000";
}
MapCoordinate entity = new MapCoordinate();
if (StringUtils.isNotBlank(p_index)) {
// entity.setP_index(Long.valueOf(p_index));
entity.getMap().put("par_index", p_index);
}
entity.setIs_del(0);
entity.setIs_lock(1);
List<MapCoordinate> mapCoordinateList = getFacade()
.getMapCoordinateService().getMapCoordinateList(entity);
JSONArray list = new JSONArray();
for (MapCoordinate map : mapCoordinateList) {
JSONObject obj = new JSONObject();
obj.put("title", map.getMap().get("area_name"));
obj.put("point",
map.getJd().toString().concat("|")
.concat(map.getWd().toString()));
obj.put("url", "/index.do?p_index=" + map.getP_index());
obj.put("p_index", map.getP_index());
obj.put("add_date", map.getAdd_date());
list.put(obj);
}
super.render(response, list.toString(), "text/x-json;charset=UTF-8");
return null;
}
相关推荐
在本文中,我们将深入探讨如何使用Qt5框架与WebEngineView组件来嵌入百度地图,以便在您的应用程序中集成地理定位功能。这个示例项目,"Qt5-嵌入百度地图demo",演示了如何利用Qt5.5的特性与百度地图API进行交互,...
在IT行业中,构建类似谷歌地图或百度地图的网页地图效果是一项常见的需求,这涉及到WebGIS(Web地理信息系统)技术的应用。本项目名为"MyMaps.rar",显然是一个包含资源的压缩包,旨在帮助开发者实现这样的功能。...
为了在WPF中显示百度地图,你需要利用WebBrowser控件,这是一个内置的控件,能够嵌入Web页面到你的应用程序中。以下是一步一步的实现过程: 1. **添加WebBrowser控件**:打开你的WPF XAML设计视图,从工具箱中拖放...
在Windows应用程序开发中,Microsoft Foundation Class (MFC)库是一个强大...这个过程需要对MFC编程和Web技术有一定了解,但通过上述步骤,你可以成功地在MFC应用中嵌入并使用百度地图服务,提供丰富的地图功能给用户。
1. **百度地图API**:百度地图API是百度提供的一套JavaScript接口,允许开发者在其网页上嵌入地图,进行地图展示、定位、路径规划等操作。开发者需要申请密钥(AK)才能正常使用。 2. **地图行政区**:地图行政区是...
百度地图API是百度提供的一套Web服务接口,允许开发者在其网站或应用中嵌入百度地图,实现地图的动态展示、位置搜索、地理编码、路线规划等多种功能。开发者通过调用API接口,结合自己的业务逻辑,即可实现自定义的...
标题中的“调用百度地图API实现的桌面应用程序”是指利用编程语言(如C#、Java或Python等)创建一个桌面应用程序,并在这个应用中嵌入了百度地图的服务。开发者通过调用百度地图提供的API(Application Programming ...
在百度地图中,这些算法被用于计算两点或多点之间的最优路径,考虑到交通状况、路况、限行规则等因素。 再者,**实时路线**是指在动态变化的交通环境中,根据实时交通数据更新导航路线。这需要地图服务商具备强大的...
在本文中,我们将深入探讨如何使用百度地图API与JavaScript进行集成,以便在Web应用程序中实现地图功能。首先,我们需要理解什么是API(Application Programming Interface),它是一组预定义的函数、类和协议,允许...
在C#中调用百度地图API可以方便地构建桌面或Web应用程序。 2. **百度地图API**: 百度地图API是百度提供的一套用于开发地图相关应用的接口,支持JavaScript、Android、iOS以及WebService等多种平台。在这里,我们...
百度地图Android SDK是百度提供的一套用于开发地图应用的工具集,它允许开发者在Android应用中嵌入地图、定位、路线规划等功能。相比Web SDK,Android SDK更具有性能优势,因为它可以直接与设备硬件交互,提供更加...
百度地图API是百度提供的一套强大的Web服务接口,它允许开发者在其网站或应用中嵌入地图功能,实现各种地图相关的定制化操作。 首先,我们要了解什么是地图API。API(Application Programming Interface)是应用...
6. **Web GIS开发**:使用OpenLayers与百度地图瓦片数据,开发者可以创建定制化的地图应用,如导航、位置查询、数据分析等,这些应用可以嵌入到网页中,提供丰富的用户体验。 综上所述,这个压缩包“百度地图瓦片...
百度地图API是开发者用来集成百度地图服务的一个强大工具,它允许程序员在自己的应用程序、网站或系统中嵌入地图功能,实现各种定制化的地理信息处理。通过使用百度地图API,开发者可以轻松地实现地图展示、定位、...
总的来说,“Map-master_mapmaster_web地图_百度地图_”是一个针对百度地图API的Web开发工具或示例,它提供了地图展示、切换视图、定位和路径规划等功能,帮助开发者更好地利用百度地图服务构建丰富的Web应用。...
总结起来,通过C# WinForms的WebBrowser控件,我们可以轻松地在桌面应用中嵌入百度地图。关键在于理解和运用WebBrowser控件的Navigate方法,以及正确编写HTML和调用百度地图API。这个过程涉及到了C#的事件处理、文件...
解析后的数据可以嵌入到HTML中,结合JavaScript的百度地图SDK,将热力图层叠加到地图上。 最后,我们可以使用Flask或Django等Web框架,创建一个简单的Web服务,用户通过浏览器访问这个服务,就能看到动态的热力地图...
1. **百度地图Web API**:这是百度提供的一套JavaScript接口,允许开发者在网页中嵌入地图、进行定位、路径规划等功能。通过调用API提供的各种方法和事件,开发者可以自定义地图展示样式,添加标记(marker)、覆盖...
本文将详细讲解基于Qt开发的轨迹回放软件的相关知识点,该软件能够嵌入百度在线地图,读取CSV格式的运动数据,并在地图上动态展示机器人的运动轨迹。 首先,我们来了解一下Qt。Qt是一个跨平台的C++图形用户界面应用...
百度地图API是百度提供的一套用于在网页或应用程序中嵌入地图服务的接口。它包括了地图展示、地理编码、路径规划、位置定位等多种功能,支持JavaScript、Android和iOS等多个平台。 在LabVIEW中调用百度地图API,...