码迷,mamicode.com
首页 > 其他好文 > 详细

百度地图

时间:2018-12-27 18:36:49      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:char   point   out   asc   i++   zoom   async   enter   data   

功能:通过ajax获取到数据标记在地图上,鼠标移上去显示该标记的信息。

遇到的坑:把创建窗口的代码即cont(name,longi,lati,mark)方法里面的代码放在了for循环中,所有的标记显示的信息都是最后一条数据信息。

解决办法:把创建窗口的代码封装在了方法里,正常显示。

完整代码:

<!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" />
    <style type="text/css">
        body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
        #allmap{height:100%;width:100%;}
        #r-result{width:100%;}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=H59Qq9DG6l9nm1rF80cMdDRH"></script><!--百度地图API-->
    <title>百度地图</title>
</head>
<body>
    <div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("allmap"); // 创建Map实例
    var point = new BMap.Point(116.404, 39.915); // 创建中心点坐标
    map.centerAndZoom(point, 5); // 设置地图级别(地图缩放级别,数字越大,缩放的范围越大)
   map.enableScrollWheelZoom(); //启用滚轮放大缩小
    //创建信息窗口
    function cont(name,longi,lati,mark){
      var opts = {
        width : 260, //信息窗口宽度
        height: 80, //信息窗口高度
        title : "<b>服务站信息</b>" , //信息窗口标题
        enableMessage:true	//设置允许信息窗发送短息
      };
      var content = ‘<div><p style="margin:0;line-height:1.5;font-size:13px;">‘+name+‘<br/>经度:‘+longi+‘<br/>纬度:‘+lati+
              ‘<br/></p></div>‘;
      var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象
      //添加鼠标滑过时打开自定义信息窗口事件
      mark.addEventListener("mouseover",function () {
        this.openInfoWindow(infoWindow);
      });
      //添加鼠标离开时关闭自定义信息窗口事件
      mark.addEventListener("mouseout",function () {
        this.closeInfoWindow();
      });
    }

    $.ajax({
      async:false,
      cache:true,
      url: "获取位置信息的接口",
      type: ‘GET‘,
      success: function(result){
        if(result != undefined && result.length >0){
          map.centerAndZoom(new BMap.Point(result[0].longitude, result[0].latitude));
          var longitude = [], latitude = [];
          for (var i = 0; i < result.length; i++) {

            var marker = new BMap.Marker(new BMap.Point(data[i].longi,data[i].lati)); // 创建点
            map.addOverlay(marker); //增加点
            cont(data[i].name,data[i].longi,data[i].lati,marker); //调用创建窗口方法

          }
        }
      },
      error:function(e){
        alert("获取信息失败");
      }
    });

</script>

  

百度地图

标签:char   point   out   asc   i++   zoom   async   enter   data   

原文地址:https://www.cnblogs.com/xi-li/p/10185445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!