`

web应用中嵌入百度地图

 
阅读更多

        前几天客户提需求要做一个在网站首页嵌入百度地图的功能,在网上找了找资料 现将代码保存至此以便以后参考,有同样需求的同学,可以参考下,另使用地图前必须要申请一个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>&nbsp&nbsp&nbsp盟市网站群</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-嵌入百度地图demo

    在本文中,我们将深入探讨如何使用Qt5框架与WebEngineView组件来嵌入百度地图,以便在您的应用程序中集成地理定位功能。这个示例项目,"Qt5-嵌入百度地图demo",演示了如何利用Qt5.5的特性与百度地图API进行交互,...

    类似谷歌地图 web地图 图片拖动 百度地图 网页地图效果 MyMaps.rar

    在IT行业中,构建类似谷歌地图或百度地图的网页地图效果是一项常见的需求,这涉及到WebGIS(Web地理信息系统)技术的应用。本项目名为"MyMaps.rar",显然是一个包含资源的压缩包,旨在帮助开发者实现这样的功能。...

    wpf中插入百度地图

    为了在WPF中显示百度地图,你需要利用WebBrowser控件,这是一个内置的控件,能够嵌入Web页面到你的应用程序中。以下是一步一步的实现过程: 1. **添加WebBrowser控件**:打开你的WPF XAML设计视图,从工具箱中拖放...

    百度地图API应用实例说明文档.doc

    百度地图API是百度提供的一套Web服务接口,允许开发者在其网站或应用中嵌入百度地图,实现地图的动态展示、位置搜索、地理编码、路线规划等多种功能。开发者通过调用API接口,结合自己的业务逻辑,即可实现自定义的...

    调用百度地图API实现的桌面应用程序

    标题中的“调用百度地图API实现的桌面应用程序”是指利用编程语言(如C#、Java或Python等)创建一个桌面应用程序,并在这个应用中嵌入了百度地图的服务。开发者通过调用百度地图提供的API(Application Programming ...

    MFC控件调用百度地图

    在Windows应用程序开发中,Microsoft Foundation Class (MFC)库是一个强大...这个过程需要对MFC编程和Web技术有一定了解,但通过上述步骤,你可以成功地在MFC应用中嵌入并使用百度地图服务,提供丰富的地图功能给用户。

    web端js百度地图自定义maker覆盖物_鼠标悬停展示行政区域高亮

    1. **百度地图API**:百度地图API是百度提供的一套JavaScript接口,允许开发者在其网页上嵌入地图,进行地图展示、定位、路径规划等操作。开发者需要申请密钥(AK)才能正常使用。 2. **地图行政区**:地图行政区是...

    C#百度地图API.rar_C#_C# 百度地图_fallq3k_地图 _百度地图API

    在C#中调用百度地图API可以方便地构建桌面或Web应用程序。 2. **百度地图API**: 百度地图API是百度提供的一套用于开发地图相关应用的接口,支持JavaScript、Android、iOS以及WebService等多种平台。在这里,我们...

    Delphi Android 调用 百度地图AndroidSDK,非WebSDK

    百度地图Android SDK是百度提供的一套用于开发地图应用的工具集,它允许开发者在Android应用中嵌入地图、定位、路线规划等功能。相比Web SDK,Android SDK更具有性能优势,因为它可以直接与设备硬件交互,提供更加...

    baidu.map.rar_地图API_百度 map_百度API_百度地图_百度地图API

    百度地图API是百度提供的一套强大的Web服务接口,它允许开发者在其网站或应用中嵌入地图功能,实现各种地图相关的定制化操作。 首先,我们要了解什么是地图API。API(Application Programming Interface)是应用...

    百度地图瓦片2.0.rar

    6. **Web GIS开发**:使用OpenLayers与百度地图瓦片数据,开发者可以创建定制化的地图应用,如导航、位置查询、数据分析等,这些应用可以嵌入到网页中,提供丰富的用户体验。 综上所述,这个压缩包“百度地图瓦片...

    百度地图api_百度地图API_百度地图_

    百度地图API是开发者用来集成百度地图服务的一个强大工具,它允许程序员在自己的应用程序、网站或系统中嵌入地图功能,实现各种定制化的地理信息处理。通过使用百度地图API,开发者可以轻松地实现地图展示、定位、...

    Map-master_mapmaster_web地图_百度地图_

    总的来说,“Map-master_mapmaster_web地图_百度地图_”是一个针对百度地图API的Web开发工具或示例,它提供了地图展示、切换视图、定位和路径规划等功能,帮助开发者更好地利用百度地图服务构建丰富的Web应用。...

    百度地图API自定义地图底层

    【百度地图API自定义地图底层】是百度地图提供的一项高级功能,允许开发者根据自身需求定制地图的显示样式和内容,从而实现个性化地图服务。在WEB版本中,这一特性为前端开发人员提供了极大的灵活性,可以创建出与...

    百度地图API使用整合(javascript)

    在本文中,我们将深入探讨如何使用百度地图API与JavaScript进行集成,以便在Web应用程序中实现地图功能。首先,我们需要理解什么是API(Application Programming Interface),它是一组预定义的函数、类和协议,允许...

    百度地图web api 增强显示.zip

    1. **百度地图Web API**:这是百度提供的一套JavaScript接口,允许开发者在网页中嵌入地图、进行定位、路径规划等功能。通过调用API提供的各种方法和事件,开发者可以自定义地图展示样式,添加标记(marker)、覆盖...

    使用Qt开发的轨迹回放软件源码。嵌入百度在线地图,读取csv运动数据,绘制动态轨迹

    本文将详细讲解基于Qt开发的轨迹回放软件的相关知识点,该软件能够嵌入百度在线地图,读取CSV格式的运动数据,并在地图上动态展示机器人的运动轨迹。 首先,我们来了解一下Qt。Qt是一个跨平台的C++图形用户界面应用...

    C# winfrom窗体显示百度地图

    总结起来,通过C# WinForms的WebBrowser控件,我们可以轻松地在桌面应用中嵌入百度地图。关键在于理解和运用WebBrowser控件的Navigate方法,以及正确编写HTML和调用百度地图API。这个过程涉及到了C#的事件处理、文件...

    百度地图调用,百度地图调用代码,LabView

    百度地图API是百度提供的一套用于在网页或应用程序中嵌入地图服务的接口。它包括了地图展示、地理编码、路径规划、位置定位等多种功能,支持JavaScript、Android和iOS等多个平台。 在LabVIEW中调用百度地图API,...

    百度地图API实现热力地图

    解析后的数据可以嵌入到HTML中,结合JavaScript的百度地图SDK,将热力图层叠加到地图上。 最后,我们可以使用Flask或Django等Web框架,创建一个简单的Web服务,用户通过浏览器访问这个服务,就能看到动态的热力地图...

Global site tag (gtag.js) - Google Analytics