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 面向对象实现代码
Nov 11 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
解析php常用image图像函数集
Jun 24 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
浅谈php调用python文件
Mar 29 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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
php创建多级目录代码
2008/06/05 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
PHP 图片处理
2020/09/16 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python编写一个优美的下载器
2018/04/15 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
详解Django配置优化方法
2019/11/18 Python
python 实现list或string按指定分段
2019/12/25 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
CSS3伪类选择器:nth-child()
2009/04/02 HTML / CSS
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
大学生蛋糕店创业计划书
2014/01/13 职场文书
新春寄语大全
2014/04/09 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
初中英语教学反思范文
2016/02/15 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python