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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
图书管理程序(二)
Oct 09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
PHP获取url的函数代码
Aug 02 PHP
深入PHP curl参数的详解
Jun 17 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
小谈php正则提取图片地址
Mar 27 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 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
极典R601SW收音机
2021/03/02 无线电
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
php遍历目录方法小结
2015/03/10 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
python如何写try语句
2020/07/14 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
C#笔试题
2015/07/14 面试题
旅游网创业计划书
2014/01/31 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
罗马假日观后感
2015/06/08 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android