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 相关文章推荐
一个用php3编写的简单计数器
Oct 09 PHP
什么是MVC,好东西啊
May 03 PHP
php 正则匹配函数体
Aug 25 PHP
PHP生成RSS文件类实例
Dec 05 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
实例讲解php实现多线程
Jan 27 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 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
中国的第一台收音机
2021/03/01 无线电
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
深入PHP数据加密详解
2013/06/18 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
Python读取网页内容的方法
2015/07/30 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
Python 绘制可视化折线图
2020/07/22 Python
python两个list[]相加的实现方法
2020/09/23 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
求网格中的黑点分布
2013/11/06 面试题
恒华伟业笔试面试题
2015/02/26 面试题
工商干部先进事迹
2014/05/14 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书