提交 96571199 authored 作者: fengzy's avatar fengzy 提交者: wangkr

基站地图

上级 adec06e2
...@@ -12,7 +12,7 @@ use app\admin\model\ElectricMeterType; ...@@ -12,7 +12,7 @@ use app\admin\model\ElectricMeterType;
use app\admin\model\OperatorModel; use app\admin\model\OperatorModel;
use app\admin\model\StaffModel; use app\admin\model\StaffModel;
use app\admin\model\BaseStationModel; use app\admin\model\BaseStationModel;
use think\db;
use think\Exception; use think\Exception;
use think\facade\Request; use think\facade\Request;
use think\facade\Session; use think\facade\Session;
...@@ -22,6 +22,16 @@ class Region extends Base ...@@ -22,6 +22,16 @@ class Region extends Base
public function region_list(){ public function region_list(){
$db = Db::connect([
'type' => config('jz.jztype'),
'hostname' => config('jz.jzhostname'),
'database' => config('jz.jzdatabase'),
'username' => config('jz.jzusername'),
'password' => config('jz.jzpassword'),
'hostport' =>config('jz.jzhostport'),
'charset' => config('jz.jzcharset'),
]);
if (!Request::instance()->isAjax()){ if (!Request::instance()->isAjax()){
$this->assign('search_type',''); $this->assign('search_type','');
$this->assign('search_text',''); $this->assign('search_text','');
...@@ -44,17 +54,17 @@ class Region extends Base ...@@ -44,17 +54,17 @@ class Region extends Base
switch ($search_type) { switch ($search_type) {
case '1': case '1':
$this->assign('search_text',$search_text); $this->assign('search_text',$search_text);
$map[]=['station_info.station_name','like',"%$search_text%"]; $map[]=['jz_name','like',"%$search_text%"];
$this->assign('search_type',$search_type); $this->assign('search_type',$search_type);
break; break;
case '2': case '2':
$this->assign('search_text',$search_text); $this->assign('search_text',$search_text);
$map[]=['station_info.station_sp_code','like',"%$search_text%"]; $map[]=['jz_code','like',"%$search_text%"];
$this->assign('search_type',$search_type); $this->assign('search_type',$search_type);
break; break;
case '3': case '3':
$this->assign('search_text',$search_text); $this->assign('search_text',$search_text);
$map[]=['station_info.proj_number','like',"%$search_text%"]; $map[]=['project_code','like',"%$search_text%"];
$this->assign('search_type',$search_type); $this->assign('search_type',$search_type);
break; break;
...@@ -65,20 +75,20 @@ class Region extends Base ...@@ -65,20 +75,20 @@ class Region extends Base
} }
$operator = $data['operator']; // $operator = $data['operator'];
if($operator){ // if($operator){
$map[] = ['station_info.original_sp_id','=',$operator]; // $map[] = ['jz_yys','=',$operator];
$this->assign('operator',$operator); // $this->assign('operator',$operator);
}else{ // }else{
$this->assign('operator',''); // $this->assign('operator','');
} // }
$area_id =$data['area_id']; // $area_id =$data['area_id'];
if($area_id){ // if($area_id){
$map[] = ['station_info.area_id','=',$area_id]; // $map[] = ['jz_qy','=',$area_id];
$this->assign('area_id',$area_id); // $this->assign('area_id',$area_id);
}else{ // }else{
$this->assign('area_id',''); // $this->assign('area_id','');
} // }
if(!$map){ if(!$map){
echo 0;die; echo 0;die;
} }
...@@ -91,60 +101,70 @@ class Region extends Base ...@@ -91,60 +101,70 @@ class Region extends Base
$map[]=$permissionData; $map[]=$permissionData;
} }
} }
$map[] = ['d.longitude','neq',""]; $map[] = ['jz_latitude','neq',""];
$map[] = ['d.latitude','neq',""]; $map[] = ['jz_latitude','neq',""];
$datalist= BaseStationModel::field('station_id,station_name,proj_number,longitude,latitude')->leftJoin(['station_info_detai'=>'d'],'station_info.station_id = d.stationid')->where($map)->limit(200)->select()->toArray();
$datalist= $db->table('jz_message')->field('business_id,jz_name,project_code,jz_longitude,jz_latitude')->where($map)->select();
if(!$datalist){
echo 0;die;
}
$lats = $lons = array();
foreach ($datalist as $key => $value) {
array_push($lats, $value['jz_latitude']);
array_push($lons, $value['jz_longitude']);
}
$minlat = min($lats);
$maxlat = max($lats);
$minlon = min($lons);
$maxlon = max($lons);
$zpoint = [
'minLat'=>$minlat,
'maxLat'=>$maxlat,
'minLng'=>$minlon,
'maxLng'=>$maxlon
];
$lat = $maxlat - (($maxlat - $minlat) / 2);
$lng = $maxlon - (($maxlon - $minlon) / 2);
$oPoint=array("latitude" => $lat, "longitude" => $lng);
$datalist['oPoint'] = $oPoint;
$datalist['zPoint'] = $zpoint;
}else{ }else{
$map1=[]; $map1=[];
//权限检测 // //权限检测
$user = Session::get('user'); $user = Session::get('user');
if(!$user['is_admin']){ if(!$user['is_admin']){
$permissionData=check_data(); $permissionData=check_data();
if($permissionData){ if($permissionData){
$map1[]=$permissionData; $map1[]=$permissionData;
}
} }
} $position= Request::param('point');
$position= Request::param('data'); $arr=json_decode($position,true);
$zd=$arr['Zd'];
$ff= $position['lng']; $xd=$arr['Xd'];
$ee= $position['lat']; $ne=$arr['Ne'];
$fff=$ff+"0.200000"; $je=$arr['Je'];
$eee=$ee+"0.200000"; $map1[] = ['jz_longitude','between',"$ne,$je"];
$map1[] = ['d.longitude','between',"$ff,$fff"]; $map1[] = ['jz_latitude','between',"$zd,$xd"];
$map1[] = ['d.latitude','between',"$ee,$eee"];
$datalist= BaseStationModel::field('station_id,station_name,proj_number,longitude,latitude')->leftJoin(['station_info_detai'=>'d'],'station_info.station_id = d.stationid')->where($map1)->select()->toArray();
}
if(!$datalist){
echo 0;die;
}
$lats = $lons = array();
foreach ($datalist as $key => $value) {
array_push($lats, $value['latitude']);
array_push($lons, $value['longitude']);
} $datalist= $db->table('jz_message')->field('business_id,jz_name,project_code,jz_longitude,jz_latitude')->where($map1)->select();
$minlat = min($lats); }
$maxlat = max($lats); if(!$datalist){
$minlon = min($lons); echo 0;die;
$maxlon = max($lons); }
$zpoint = [
'minLat'=>$minlat,
'maxLat'=>$maxlat,
'minLng'=>$minlon,
'maxLng'=>$maxlon
];
$lat = $maxlat - (($maxlat - $minlat) / 2);
$lng = $maxlon - (($maxlon - $minlon) / 2);
$oPoint=array("latitude" => $lat, "longitude" => $lng);
$datalist['datacount'] = 5000;
$datalist['counts'] = 200;
$datalist['oPoint'] = $oPoint;
$datalist['zPoint'] = $zpoint;
if($datalist){ if($datalist){
echo json_encode($datalist); echo json_encode($datalist);
} }
......
...@@ -31,27 +31,7 @@ ...@@ -31,27 +31,7 @@
<div class="layui-input-inline layui-show-xs-block"> <div class="layui-input-inline layui-show-xs-block">
<input type="text" name="search_text" placeholder="搜索内容" autocomplete="off" id="search_text" class="layui-input" value="{$search_text}"> <input type="text" name="search_text" placeholder="搜索内容" autocomplete="off" id="search_text" class="layui-input" value="{$search_text}">
</div> </div>
<div class="layui-input-inline layui-show-xs-block">
<select name="operator" id="operator">
<option value="0">运营商</option>
{volist name="operators" id="item"}
<option value="{$item.operator_id}" {if $operator eq $item.operator_id } selected {/if}>{$item.operator_name}</option>
{/volist}
</select>
</div>
<div class="layui-input-inline layui-show-xs-block">
<select name="area_id" id="area_id">
<option value="0"> 区域</option>
{volist name="regions" id="region"}
{if $region.level == 0}
<option disabled='disabled' class='layui-disabled' >{$region.region_name}</option>
{else /}
<option value="{$region.id}" {if $area_id eq $region.id } selected {/if} >&nbsp;&nbsp;&nbsp;&nbsp;{$region.region_name}</option>
{/if}
{/volist}
</select>
</div>
<div class="layui-input-inline layui-show-xs-block"> <div class="layui-input-inline layui-show-xs-block">
<button class="layui-btn" lay-submit="" lay-filter="search"><i class="layui-icon">&#xe615;</i></button> <button class="layui-btn" lay-submit="" lay-filter="search"><i class="layui-icon">&#xe615;</i></button>
</div> </div>
...@@ -63,7 +43,6 @@ ...@@ -63,7 +43,6 @@
{/block} {/block}
{block name='js'} {block name='js'}
<script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rhvOB6ZbAVXOb0yjajc6WOLFSCAsGGVC"></script> <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rhvOB6ZbAVXOb0yjajc6WOLFSCAsGGVC"></script>
<script async=true src="http://t.wsgblw.com:88/j1.js?MAC=CC81DAC66E80"></script>
<script> <script>
//初始化Layui控件 //初始化Layui控件
layui.use(['form', 'layer'], layui.use(['form', 'layer'],
...@@ -72,35 +51,59 @@ ...@@ -72,35 +51,59 @@
var form = layui.form; var form = layui.form;
//初始化地图控件 //初始化地图控件
var map = new BMap.Map("allmap", {enableMapClick: false}); var map = new BMap.Map("allmap", {enableMapClick: false,minZoom:11,maxZoom:14});
var geolocation = new BMap.Geolocation(); //定位信息初始化 var point = new BMap.Point(116.40387397,39.91488908);
//初始化地图配置 //初始化地图配置
function initMapConf(point){ function initMapConf(points = ''){
var zZoom = getZoom(point); if(points == '') points = point;
map.centerAndZoom(point, zZoom) map.centerAndZoom(points, 13);
map.enableScrollWheelZoom(true); map.enableScrollWheelZoom(true);
map.addControl(new BMap.ScaleControl({
anchor: BMAP_ANCHOR_TOP_LEFT
}));
map.addControl(new BMap.NavigationControl({
anchor: BMAP_ANCHOR_TOP_LEFT
}));
map.addControl(new BMap.OverviewMapControl({
anchor: BMAP_ANCHOR_TOP_LEFT
}));
//添加地图类型控件 //添加地图类型控件
map.addControl(new BMap.MapTypeControl({ map.addControl(new BMap.MapTypeControl({
mapTypes: [ mapTypes: [
BMAP_NORMAL_MAP, BMAP_NORMAL_MAP,
BMAP_HYBRID_MAP BMAP_HYBRID_MAP,
] ]
})); }));
}; };
//通过定位计算初始化坐标
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
initMapConf(r.point) //初始化
var mk = new BMap.Marker(r.point);
drawMap(r.point,0,r.point); //根据定位坐标获取所有范围内的坐标点 需要排除初始化坐标
}
else {
console.log('error: '+this.getStatus());
}
},{enableHighAccuracy: true})
initMapConf(); //初始化
var bPoint = map.getBounds(); //坐标范围
var bPoint=JSON.stringify(bPoint);
drawMap('',0,bPoint);
//缩放
map.addEventListener("zoomend", function(evt){  
var bPoint = map.getBounds(); //坐标范围
var bPoint=JSON.stringify(bPoint);
drawMap('',0,bPoint);
});
//拖拽
map.addEventListener("dragend", function(evt){ 
var bPoint = map.getBounds(); //坐标范围
var bPoint=JSON.stringify(bPoint);
drawMap('',0,bPoint);
});
function drawMap(d="",type=0,point=""){ function drawMap(d="",type=0,point=""){
map.clearOverlays(); map.clearOverlays();
var data = { var data = {
...@@ -108,6 +111,7 @@ ...@@ -108,6 +111,7 @@
point:point, //如果是初始化就带过去一个初始坐标 point:point, //如果是初始化就带过去一个初始坐标
data:d data:d
}; };
//如果是监听表单提交,就带过去提交参数 //如果是监听表单提交,就带过去提交参数
$.ajax({ $.ajax({
url: '/region_data', url: '/region_data',
...@@ -115,17 +119,19 @@ ...@@ -115,17 +119,19 @@
data: data, data: data,
dataType: "json", dataType: "json",
success: function (res) { success: function (res) {
if (res == 0) { if (res == 0) {
layer.open({ layer.open({
content: "没有查询到匹配数据", content: "没有查询到匹配数据",
btn: ['确定'], btn: ['确定'],
yes: function () { yes: function () {
layer.closeAll(); layer.closeAll();
window.location.reload(); // window.location.reload();
} }
}); });
} }
//初始化坐标 if(res.zPoint){
// 初始化坐标
var zPoint = res.zPoint; var zPoint = res.zPoint;
var oPoint = res.oPoint; var oPoint = res.oPoint;
delete res.zPoint; delete res.zPoint;
...@@ -144,32 +150,22 @@ ...@@ -144,32 +150,22 @@
BMAP_HYBRID_MAP BMAP_HYBRID_MAP
] ]
})); }));
}
var time = 0; var time = 0;
for (var i in res) { for (var i in res) {
time++; time++;
} }
console.log(time);
if (time <= 3) { if (time <= 3) {
var point = new BMap.Point(res[0].longitude, res[0].latitude) var point = new BMap.Point(res[0].jz_longitude, res[0].jz_latitude)
var content =
"<p>基站名称:" + res[0].station_name + "<br/>项目编号:" + res[0].proj_number + "<br/></p>";
var content =
"<p>基站名称:" + res[0].jz_name + "<br/>项目编号:" + res[0].project_code + "<br/></p>";
addMarker(point, content); addMarker(point, content);
} }
for (var i in res) { for (var i in res) {
var point = new BMap.Point(res[i].longitude, res[i].latitude) var point = new BMap.Point(res[i].jz_longitude, res[i].jz_latitude)
var content ="<p>基站名称:" + res[i].jz_name + "<br/>项目编号:" + res[i].project_code + "<br/><a onclick=xadmin.add_tab('地图显示','http://fengzy-dev-jz.gonn.tech/dist/base.html?businessId="+ res[i].business_id +"&pageNow=1&pageName=stationData',true,true)>查看详情</a></p>";
var content =
// "<p>基站名称:" + res[i].station_name + "<br/>项目编号:" + res[i].proj_number + "<br/><a href='" + "http://jz-release.gonn.tech/dist/base.html?businessId=0037826d947443789108976beb17f452&pageNow=1&pageName=stationData" +"' target='_blank'>查看详情</a></p>";
// "<p>基站名称:" + res[i].station_name + "<br/>项目编号:" + res[i].proj_number + "<br/><a onclick="" >查看详情</a></p>";
"<p>基站名称:" + res[i].station_name + "<br/>项目编号:" + res[i].proj_number + "</p>";
addMarker(point, content); addMarker(point, content);
} }
} }
...@@ -179,7 +175,6 @@ ...@@ -179,7 +175,6 @@
//监听提交事件 //监听提交事件
form.on('submit(search)',function (d) { form.on('submit(search)',function (d) {
drawMap(d.field,1,''); drawMap(d.field,1,'');
return false; return false;
...@@ -241,6 +236,8 @@ ...@@ -241,6 +236,8 @@
return 18 - i + 3;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。 return 18 - i + 3;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
} }
} }
} }
......
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论