百度地图定位及坐标转换
首页->学习资料->编程语言->php教程->php技巧 关键词: 发布时间:2017-02-13 02:13:15 浏览次数:2438

最近要搞一个活动,关于门店定位的:

将csv文件中的中文地址转换成百度地图经纬坐标:

$oneline对应csv文件中的地行地址

public function baiduMap(){
   set_time_limit(0);
   $file=APP_PATH.'ctrl/love.csv';
   $handle=fopen($file,'r');
   if($handle){
       $i=0;
       while(!feof($handle)){
           $oneline=fgetss($handle);
           if($oneline){
               //var_dump($oneline);
               //$oneline=str_replace('\r\n','',$oneline);
               if(strlen($oneline)>2){
                   if($i<400){
                       $url='http://api.map.baidu.com/geocoder/v2/?output=json&ak=换成你自己的key &address='.$oneline;
                       $str=file_get_contents($url);
                       sleep(1);//休息一下,防止服务器挂掉
                       if($str){
                           $arr=json_decode($str,true);
                           //self::p($arr);
                           $x=$arr['result']['location']['lng'];
                           $y=$arr['result']['location']['lat'];
                           $sql="insert into `table` values(null,$oneline,$x,$y)<br/>";
                           echo $sql;
                       }else{
                           echo $i.$oneline.'<br/>';
                       }
                   }
                   $i++;
               }

           }

       }
   }

}


百度地图定位的一些接口:

中文地址转经纬度坐标:
http://api.map.baidu.com/geocoder/v2/?output=json&ak=你自己的key&address=中文地址

根据经纬度定位地址:
http://lbsyun.baidu.com/jsdemo.htm#i8_4

点击地图获取坐标:
http://lbsyun.baidu.com/jsdemo.htm#f0_3

绘制点线面:
http://lbsyun.baidu.com/jsdemo.htm#f0_7

百度地图地点标注及纠错:
http://i.map.baidu.com/api/page/poicorrect/addpoipc?business_trigger=8&city_id=301&poi_name=%E4%B8%AD%E5%B1%B1%E4%B8%AD%E5%AD%A6-%E5%85%AC%E4%BA%A4%E8%BD%A6%E7%AB%99




一个比较完整的经常用到的百度地图示例:

<!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,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你自己的key"></script>
    <!--测距离用-->
    <script type="text/javascript" src="http://api.map.baidu.com/library/DistanceTool/1.2/src/DistanceTool_min.js"></script>
    <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(114.13429547417234, 22.574919563811855);//标注点
    map.centerAndZoom(point, 16);  // 初始化地图,设置中心点坐标和地图级别
    map.addControl(new BMap.MapTypeControl());   //添加地图类型控件
    map.setCurrentCity("深圳市水贝万山珠宝园");          // 设置地图显示的城市 此项是必须设置的
    map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
    map.addControl(new BMap.NavigationControl());//左上控件
    //标注  
    var marker = new BMap.Marker(point);        // 创建标注    
    map.addOverlay(marker);                     // 将标注添加到地图中
    //marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
    //监听标注事件
    marker.addEventListener("click", function(e){    
     alert("当前位置:" + e.point.lng + ", " + e.point.lat);
    });
    //托拽的标注
    marker.enableDragging();    
    marker.addEventListener("dragend", function(e){    
     alert("当前位置:" + e.point.lng + ", " + e.point.lat);    
    })
    //地图上加信息窗口
    var opts = {    
     width : 250,     // 信息窗口宽度    
     height: 100,     // 信息窗口高度    
     title : "闪盟珠宝"  // 信息窗口标题   
    }    
    var infoWindow = new BMap.InfoWindow("这里是内容区", opts);  // 创建信息窗口对象    
    map.openInfoWindow(infoWindow, map.getCenter());      // 打开信息窗口
    //左上角加比例尺
    var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});// 左上角,添加比例尺
    map.addControl(top_left_control);
    
    // 添加带有定位的导航控件(地图上的点击获取当前位置)
      var navigationControl = new BMap.NavigationControl({
        // 靠左上角位置
        anchor: BMAP_ANCHOR_TOP_LEFT,
        // LARGE类型
        type: BMAP_NAVIGATION_CONTROL_LARGE,
        // 启用显示定位
        enableGeolocation: true
      });
      map.addControl(navigationControl);
      // 添加定位控件
      var geolocationControl = new BMap.GeolocationControl();
      geolocationControl.addEventListener("locationSuccess", function(e){
        // 定位成功事件
        var address = '';
        address += e.addressComponent.province;
        address += e.addressComponent.city;
        address += e.addressComponent.district;
        address += e.addressComponent.street;
        address += e.addressComponent.streetNumber;
        alert("当前定位地址为:" + address);
      });
      geolocationControl.addEventListener("locationError",function(e){
        // 定位失败事件
        alert(e.message);
      });
      map.addControl(geolocationControl);
      
    ///////////////////添加城市列表///////////////////////
    /*var mp = new BMap.Map("allmap");
    var point = new BMap.Point(116.404, 39.915);
    mp.centerAndZoom(point, 14);
    mp.enableScrollWheelZoom();
    mp.enableInertialDragging();
    
    mp.enableContinuousZoom();
    
    var size = new BMap.Size(10, 20);
    mp.addControl(new BMap.CityListControl({
        anchor: BMAP_ANCHOR_TOP_LEFT,
        offset: size,
        // 切换城市之间事件
        // onChangeBefore: function(){
        //    alert('before');
        // },
        // 切换城市之后事件
        // onChangeAfter:function(){
        //   alert('after');
        // }
    }));
    */
    
    /****************测距离***************/
    // 百度地图API功能
    /*var map = new BMap.Map("allmap");           
    map.centerAndZoom("万山珠宝园",16);                  
    var myDis = new BMapLib.DistanceTool(map);
    map.addEventListener("load",function(){
        myDis.open();  //开启鼠标测距
        //myDis.close();  //关闭鼠标测距大
    });
    */




</script>

赞:(0)
踩:(0)
相关文章
phpexcel设置行高及列宽,背景颜色,
单点登录sso原理及php实现方式及de
在php中用curl请求java接口无法获
免费ip地址查询接口
php,java,android, aes加解密-加密
地图上计算两点间的距离
关于百度地图的一些技巧
php中empty,is_null,isset的区别
windows及linux下composer安装教程
一种精妙的数据查询与存储方式
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:610篇
浏览数:953068
粤ICP备18028092号-1  微信:hurong241