<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
|
<input name="ServiceOrdID" type="hidden" value="<%=ServiceOrdID%>">
|
<input name="hidden_street" id="hidden_street" type="hidden" value="<%=ServiceOrdTraStreet%>">
|
<input name="hidden_end" id="hidden_end" type="hidden" value="<%=ServiceOrdTraEnd%>">
|
<div style="margin: 5px;font-size: 15px;">默认地址:<a onclick="frm_street_JS('民航广州医院')">民航广州医院</a></div>
|
<div width="300px">路线由:<input type="text" id="frm_street" size="20" value="" style="width:300px;" /> 至<i id="frm_transfer" style="font-style: normal;"></i><input type="text" id="frm_end" size="20" value="" style="width:300px;" /><input type="button" class="dialogJbtn first-child" onclick="frm_end_JS()" value="确定">
|
<!--<input type="button" value="查找" id="submit" onClick="getAddress()"/>-->
|
</div>
|
|
<div id="result" style=" width:400px; float:left"></div>
|
<div style="width:800px;height:600px;border:1px solid gray; float:right" id="container"></div>
|
</body>
|
|
<script type="text/javascript">
|
|
var search="frm_street"; //定义查询框ID;
|
var search1="frm_end"; //定义查询框ID;
|
var local="广州市"; // 定义本地地址;
|
var lng="104.290493"; //经度
|
var lat="30.981528"; //纬度
|
|
var ret = "";
|
var ret1 = "";
|
|
var newmarker;
|
var map = new BMap.Map("container"); //创建地图实例
|
var spoi = new BMap.Point(lng,lat); //经纬度
|
var point = new BMap.Point(lng,lat); //创建点坐标
|
map.centerAndZoom(point,15); //初始化地图,设置中心点坐标和地图级别
|
map.enableScrollWheelZoom(); //启用滚轮放大缩小地图
|
|
//add_flag0();
|
//=================获取元素==========================\\
|
function G(id) {
|
return document.getElementById(id);
|
}
|
function GV(id){
|
return document.getElementById(id).value;
|
}
|
|
//=================默认出发地==========================\\
|
function frm_street_JS(ServiceOrdTraStreet){
|
document.getElementById('frm_street').value=ServiceOrdTraStreet;
|
document.getElementById("hidden_street").value=ServiceOrdTraStreet;
|
getAddress();
|
}
|
|
//=================确定行程地址==========================\\
|
function frm_end_JS(ServiceOrdTraStreet){
|
var hidden_street=document.getElementById("hidden_street").value;
|
var frm_street=document.getElementById("frm_street").value;
|
var hidden_end=document.getElementById("hidden_end").value;
|
var frm_end=document.getElementById("frm_end").value;
|
ServiceOrdPtOutHosp=document.getElementById("ServiceOrdPtOutHosp").value
|
if (hidden_street!=frm_street || hidden_end!=frm_end)
|
{
|
map.clearOverlays();
|
JS_BaiduCalCreateEmpty();
|
getAddress();
|
setTimeout("get_point_end('"+frm_end+"')",500);
|
document.getElementById("hidden_street").value=frm_street;
|
document.getElementById("hidden_end").value=frm_end;
|
}
|
JS_BaiduCalCreateClose();
|
}
|
|
|
|
//=================添加标记==========================\\
|
//添加标记
|
function add_flag0(){
|
var localmarker=new BMap.Marker(new BMap.Point(lng,lat));
|
map.addOverlay(localmarker);
|
}
|
|
//添加目的地标记
|
function add_flag1(point){
|
map.centerAndZoom(point, 15);
|
map.clearOverlays(); //清除地图上所有覆盖物
|
add_flag0(); //添加标记
|
newmarker=new BMap.Marker(new BMap.Point(point.lng,point.lat));
|
map.addOverlay(newmarker);
|
newmarker.enableDragging();//开启拖动
|
spoi = point;
|
ServiceOrdPtOutHosp=document.getElementById("ServiceOrdPtOutHosp").value
|
|
if (ServiceOrdPtOutHosp)
|
{
|
spoi=ServiceOrdPtOutHosp;
|
driveline(point,spoi);
|
longAndtime(point,spoi,0);
|
}
|
|
// document.edit.lng.value=point.lng;
|
// document.edit.lat.value=point.lat;
|
}
|
|
|
function add_flag2(point){
|
|
map.centerAndZoom(point, 15);
|
//map.clearOverlays(); //清除地图上所有覆盖物
|
add_flag0(); //添加标记
|
newmarker=new BMap.Marker(new BMap.Point(point.lng,point.lat));
|
map.addOverlay(newmarker);
|
newmarker.enableDragging();//开启拖动
|
driveline(spoi,point);
|
|
ServiceOrdPtOutHosp=document.getElementById("ServiceOrdPtOutHosp").value
|
if (ServiceOrdPtOutHosp)
|
{longAndtime(spoi,point,1);}
|
else
|
{longAndtime(spoi,point,0);}
|
|
// document.edit.lng.value=point.lng;
|
// document.edit.lat.value=point.lat;
|
|
}
|
//=================从输入框获取地址地址==============\\
|
function getAddress(){
|
get_point(GV(search));
|
}
|
|
//=================地址解析(根据地址获取坐标点)==========================\\
|
|
function get_point(address){
|
var myGeo = new BMap.Geocoder(); // 创建地址解析器实例
|
myGeo.getPoint(address, function(point){
|
if (point) { //如果地址能解析,标记
|
//printObject(point); //输出内容
|
add_flag1(point);
|
}else{
|
alert("地址无法找到!");
|
}
|
},local);
|
}
|
|
function get_point_end(address){
|
var myGeo = new BMap.Geocoder(); // 创建地址解析器实例
|
myGeo.getPoint(address, function(point){
|
if (point) { //如果地址能解析,标记
|
//printObject(point); //输出内容
|
add_flag2(point);
|
}else{
|
alert("地址无法找到!!");
|
}
|
},local);
|
}
|
|
|
|
//=================地址反解析(根据坐标点获取地址)==========================\\
|
function get_address(e){
|
var gc = new BMap.Geocoder(); // 创建地址反解析器实例
|
var pt = e.point;
|
var result;
|
add_flag1(pt);
|
gc.getLocation(pt, function(rs){
|
var addComp = rs.addressComponents;
|
if (addComp.street + addComp.streetNumber=="")
|
{
|
result="地址无法找到!";
|
|
}
|
else{
|
result=addComp.street + addComp.streetNumber;
|
}
|
document.edit.frm_street.value=result;
|
return result;
|
|
});
|
|
}
|
|
|
//==============自动下拉列表=========================\\
|
|
var ac = new BMap.Autocomplete( {"input" : search,"location" : local} ); //建立一个自动完成的对象
|
ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
|
var _value = e.item.value;
|
myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
|
setPlace();
|
});
|
function setPlace(){
|
// map.clearOverlays(); //清除地图上所有覆盖物
|
function myFun(){
|
var pp = ls.getResults().getPoi(0).point; //获取第一个智能搜索的结果
|
add_flag1(pp);
|
}
|
var ls = new BMap.LocalSearch(local, { //智能搜索
|
onSearchComplete: myFun
|
});
|
ls.search(myValue);
|
document.getElementById("hidden_street").value=myValue;
|
|
}
|
|
var ac1 = new BMap.Autocomplete( {"input" : search1,"location" : local} ); //建立一个自动完成的对象
|
ac1.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
|
var _value = e.item.value;
|
myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
|
setPlace1();
|
});
|
|
function setPlace1(){
|
map.clearOverlays(); //清除地图上所有覆盖物
|
JS_BaiduCalCreateEmpty();
|
getAddress();
|
function myFun(){
|
var pp = ls.getResults().getPoi(0).point; //获取第一个智能搜索的结果
|
add_flag2(pp);
|
}
|
var ls = new BMap.LocalSearch(local, { //智能搜索
|
onSearchComplete: myFun
|
});
|
ls.search(myValue);
|
document.getElementById("hidden_end").value=myValue;
|
}
|
|
|
//=================搜索线路==========================\\
|
|
function driveline(myP1,myP2){
|
var driving = new BMap.DrivingRoute(map); //创建驾车实例
|
driving.search(myP1, myP2); //第一个驾车搜索
|
driving.setSearchCompleteCallback(function(){
|
var pts = driving.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组
|
var polyline = new BMap.Polyline(pts);
|
map.addOverlay(polyline);
|
|
|
var lab1 = new BMap.Label("起点",{position:myP1}); //创建2个label
|
var lab2 = new BMap.Label("终点",{position:myP2});
|
map.addOverlay(lab1);
|
map.addOverlay(lab2);
|
setTimeout(function(){
|
map.setViewport([myP1,myP2]); //调整到最佳视野
|
},1000);
|
});}
|
|
|
|
|
//=================驾车时间距离==============\\
|
function longAndtime(spoi,point,transfer){
|
var output="";
|
var searchComplete = function (results){
|
if (transit.getStatus() != BMAP_STATUS_SUCCESS){ return ;}
|
var plan = results.getPlan(0);
|
//printObject(results.Lu.point);
|
ret = plan.getDistance(true);
|
ret1 = plan.getDuration(true);
|
swlng=results.sw.point.lng
|
swlat=results.sw.point.lat
|
Lulng=results.Lu.point.lng
|
Lulat=results.Lu.point.lat
|
//output += plan.getDuration(true) + "\n"; //获取时间
|
//output += "总路程为:" ;
|
//output += plan.getDistance(true) + "\n"; //获取距离
|
//alert(output);
|
|
//填写入表单
|
JS_BaiduCalCreateSave(swlng+ ','+swlat,Lulng+ ','+Lulat,ret1,ret,transfer);
|
|
|
}
|
|
var transit = new BMap.DrivingRoute(map, {renderOptions: {map: map,panel:"result"},
|
onSearchComplete: searchComplete,
|
onPolylinesSet: function() {
|
setTimeout(function() { }, "1000");
|
}
|
});
|
transit.search(spoi, point);
|
}
|
|
/*
|
|
//=================单击地图监听事件==========================\\
|
map.addEventListener("click", function(e){
|
get_address(e);
|
// alert(get_address(e));
|
|
});
|
|
//=================移动地图监听事件==========================\\
|
newmarker.addEventListener("dragend", function(e){
|
|
});
|
*/
|
|
//=================三地途经事件==========================\\
|
//var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}});
|
//driving.search("民航广州医院", "珠江医院",{waypoints:["广州省中医院"]});//waypoints表示途经点
|
|
|
//=================输出测试数组==========================\\
|
function printObject(obj){
|
//obj = {"cid":"C0","ctext":"区县"};
|
var temp = "";
|
for(var i in obj){//用javascript的for/in循环遍历对象的属性
|
temp += i+":"+obj[i]+"\n\n";
|
}
|
alert(temp);//结果:cid:C0 \n ctext:区县
|
}
|
|
function GetDis()
|
{
|
return ret;
|
}
|
|
function GetDis1()
|
{
|
return ret1;
|
}
|
|
function GetStart() {
|
//setTimeout(function(){},"1000");
|
return GV(search);
|
}
|
|
function GetEnd() {
|
//setTimeout(function(){},"1000");
|
return GV(search1);
|
}
|
|
//显示[object Object]
|
function allPrpos(obj) {
|
// 用来保存所有的属性名称和值
|
var props = "";
|
// 开始遍历
|
for(var p in obj){
|
// 方法
|
if(typeof(obj[p])=="function"){
|
//obj[p]();
|
}else{
|
// p 为属性名称,obj[p]为对应属性的值
|
props += p + "=" + obj[p] + "; ";
|
}
|
}
|
// 最后显示所有的属性
|
alert(props);
|
}
|
|
</script>
|