最近要搞一个活动,关于门店定位的:
将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(' ','',$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)
";
echo $sql;
}else{
echo $i.$oneline.'
';
}
}
$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
一个比较完整的经常用到的百度地图示例:
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
地图展示// 百度地图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);
///添加城市列表///
// 百度地图API功能
/*var map = new BMap.Map("allmap");
map.centerAndZoom("万山珠宝园",16);
var myDis = new BMapLib.DistanceTool(map);
map.addEventListener("load",function(){
myDis.open(); //开启鼠标测距
//myDis.close(); //关闭鼠标测距大
});