php+js实现百度地图多点标注的方法


Posted in PHP onNovember 30, 2016

本文实例讲述了php+js实现百度地图多点标注的方法。分享给大家供大家参考,具体如下:

php+js实现百度地图多点标注的方法

1.php创建json数据

$products = $this->product_db->select($where);
$products_json = json_encode($products);

2.js传入json数据

类似于这样的结构

var markerArr = [{
  title: "名称:广州火车站",
  point: "113.264531,23.157003",
  address: "广东省广州市广州火车站",
  tel: "12306"
}, {
  title: "名称:广州塔(赤岗塔)",
  point: "113.330934,23.113401",
  address: "广东省广州市广州塔(赤岗塔) ",
  tel: "18500000000"
}, {
  title: "名称:广州动物园",
  point: "113.312213,23.147267",
  address: "广东省广州市广州动物园",
  tel: "18500000000"
}, {
  title: "名称:天河公园",
  point: "113.372867,23.134274",
  address: "广东省广州市天河公园",
  tel: "18500000000"
}];

js擅长处理json数据

<script>
var products_json = {$products_json};
// 百度地图
var citymap = new citymap(products_json,'宿迁');
</script>

3.处理地图

document.write('<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=1We8imivxZnaKMujZIrlDZ0v"></script>');
function citymap(markerArr, cityName){
  this.markerArr = markerArr;
  this.cityName = cityName;
  this.initMap = function() {
    this.createMap();//创建地图
    this.setMapEvent();//设置地图事件
    this.addMapControl();//向地图添加控件
  };
  this.createMap = function() {
    var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
    map.centerAndZoom(cityName,'13');
    window.map = map;//将map变量存储在全局
    // 绘制点
    for (var i = 0; i < markerArr.length; i++) {
      var p0 = markerArr[i].baidu_lng;
      var p1 = markerArr[i].baidu_lat;
      var maker = this.addMarker(new window.BMap.Point(p0, p1),markerArr[i],i );
      this.addInfoWindow(maker, markerArr[i], i);
    }
  };
  this.addMarker = function(point,pro,index) {
    var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png",
      new BMap.Size(23, 25), {
        offset: new BMap.Size(10, 25),
        imageOffset: new BMap.Size(0, 0 - index * 25)
      });
    var marker = new BMap.Marker(point, {
      icon: myIcon
    });
    map.addOverlay(marker);
    var label = new BMap.Label(pro.name,{offset:new BMap.Size(20,-10)});
    // 设置label样式
    label.setStyle({ 
      color : "#CC3333", 
      fontSize : "13px", 
      backgroundColor :"#CCFFFF",
      border :"0", 
      fontWeight :"bold" 
    });
    marker.setLabel(label);
    return marker;
  };
  this.addInfoWindow = function(marker,pro) {
    //pop弹窗标题 
    var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px"><a href="?m=home&c=product&id='+ pro.id +'">' + pro.name + '</a></div>';
    //pop弹窗信息 
    var html = [];
    html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>');
    html.push('<tr>');
    html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>');
    html.push('<td style="vertical-align:top;line-height:16px">' + pro.address + ' </td>');
    html.push('</tr>');
    html.push('</tbody></table>');
    var infoWindow = new BMap.InfoWindow(html.join(""), {
      title: title,
      width: 200
    });
    var openInfoWinFun = function() {
      marker.openInfoWindow(infoWindow);
    };
    marker.addEventListener("click", openInfoWinFun);
    return openInfoWinFun;
  }
  this.setMapEvent = function() {
    map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
    // map.enableScrollWheelZoom();//启用地图滚轮放大缩小
    map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
    map.enableKeyboard();//启用键盘上下左右键移动地图
  };
  this.addMapControl = function() {
    //向地图中添加缩放控件
    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);
  };
  this.initMap();
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php下使用SMTP发邮件的代码
Jan 10 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
简单的PHP留言本实例代码
May 09 PHP
php下载文件的代码示例
Jun 29 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
Laravel validate error处理,ajax,json示例
Oct 25 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
php 运算符与表达式详细介绍
Nov 30 #PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 #PHP
php判断是否为ajax请求的方法
Nov 29 #PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 #PHP
php获取开始与结束日期之间所有日期的方法
Nov 29 #PHP
PHP精确计算功能示例
Nov 29 #PHP
PHP 搜索查询功能实现
Nov 29 #PHP
You might like
ajax缓存问题解决途径
2006/12/06 PHP
PHP之数组学习
2011/05/29 PHP
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
python生成器表达式和列表解析
2016/03/10 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
python删除某个目录文件夹的方法
2020/05/26 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
大学毕业自我评价
2014/02/02 职场文书
给校长的建议书500字
2014/05/15 职场文书
环保小标语
2014/06/13 职场文书
谢师宴答谢词
2015/01/05 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
Javascript webpack动态import
2022/04/19 Javascript