FR.location(function(status, message, coordinate) { //三个参数,status是状态(success,fail),message是经纬度(如31.590668,120.457507),coordinate是坐标系信息(ios返回WGS84,安卓返回GCJ02)。
if (status == "success") { //获取经纬度成功时执行此函数
var aa = message.split(','); //message是一个,分割的字符串,转换成数组
weidu = aa; //获取数据分析app、企业微信、钉钉返回的纬度
jingdu = aa; //获取数据分析app、企业微信、钉钉返回的经度
if (coordinate == "WGS84") { //根据坐标系判断当前设备是安卓还是ios,安卓返回GCJ02,ios返回WGS84,当手机是ios时执行以下代码
var url1 = "https://restapi.amap.com/v3/assistant/coordinate/convert?locations=" + jingdu + "," + weidu + "&coordsys=gps&output=json&key="+KEY; //调用高德API将ios返回的地球坐标系经纬度转换为火星坐标系
FR.ajax({
url: url1,
type: "get", //高德api要求使用get方式请求
dataType: "jsonp", //跨域使用jsonp方式
success: function(data) { //请求成功时调用此函数
if (data.status == "1") { //高德api接口返回的状态码是1(请求成功)
jingdu = data.locations.split(','); //获取转换后的经度
weidu = data.locations.split(','); //获取转换后的纬度
var url2 = "https://restapi.amap.com/v3/geocode/regeo?output=json&location=" + jingdu + "," + weidu + "&key="+KEY+"&radius=10&extensions=all"; //调用高德API根据经纬度进行逆地理编码
FR.ajax({
url: url2,
type: "get", //高德api要求使用get方式请求
dataType: "jsonp", //跨域使用jsonp方式
success: function(msg) { //请求成功时调用此函数
if (msg.status == "1") { //高德api接口返回的状态码是1(请求成功)
var address = msg.regeocode.formatted_address; //从高德API返回的结果中,取出结构化地址,即地理位置名称
if (address != null && address != "" && address != "null") { //判断地址是否为空
contentPane.setCellValue(5, 64, jingdu);
contentPane.setCellValue(6, 64, weidu);
contentPane.setCellValue(7, 64, address); //给地图绑定的三个单元格赋值
contentPane.setCellValue(8, 64, shijian);
// setTimeout(function() {
// FR.Chart.WebUtils.getChart(b).dataRefresh(); //刷新地图
// }, 1000);
// FR.Msg.alert("当前地址是:" + address);
} else {
FR.Msg.alert("无法获取当前地址");
}
};
if (msg.status == "0") { //高德api接口返回的状态码是0(请求失败)
FR.Msg.alert("经纬度转换地址出错:错误信息是" + msg.info + ",错误码是:" + msg.infocode + ",详情请访问:https://lbs.amap.com/api/webservice/guide/tools/info/"); //如果出错,弹出高德api返回的报错
}
},
error: function(info) { //请求失败时调用此函数
FR.Msg.alert("请求失败,请联系管理员。");
},
complete: function(XMLHttpRequest, status) { //请求完成后最终执行回调函数
if (status == 'timeout') { //超时,status还有success,error等值的情况
FR.Msg.alert("请求超时,请检查网络。");
}
},
timeout: 3000, //超时时间为3S
async: "false" //同步请求,和上面的ajax请求不是异步的,需要顺序执行
});
};
if (data.status == "0") { //高德api接口返回的状态码是0(请求失败)
FR.Msg.alert("经纬度转换坐标系出错:错误信息是" + data.info + ",错误码是:" + data.infocode + ",详情请访问:https://lbs.amap.com/api/webservice/guide/tools/info/"); //如果出错,弹出高德api返回的报错
}
},
error: function(info) { //请求失败时调用此函数
FR.Msg.alert("请求失败,请联系管理员。");
},
complete: function(XMLHttpRequest, status) { //请求完成后最终执行回调函数
if (status == 'timeout') { //判断是否超时,status还有success,error等值的情况
FR.Msg.alert("请求超时");
}
},
timeout: 3000, //超时时间为3s
async: "false" //同步请求,和下面的ajax请求不是异步的,需要顺序执行
});
} else { //当手机是安卓时,执行以下代码
var url3 = "https://restapi.amap.com/v3/geocode/regeo?output=json&location=" + jingdu + "," + weidu + "&key="+KEY+"&radius=10&extensions=all"; //调用高德API根据经纬度进行逆地理编码
FR.ajax({
url: url3,
type: "get", //高德api要求使用get方式请求
dataType: "jsonp", //跨域使用jsonp方式
success: function(msg) { //请求成功时调用此函数
if (msg.status == "1") { //高德api接口返回的状态码是1(请求成功)
var address = msg.regeocode.formatted_address; //从高德API返回的结果中,取出结构化地址,即地理位置名称
if (address != null && address != "" && address != "null") { //判断地址是否为空
contentPane.setCellValue(5, 64, jingdu);
contentPane.setCellValue(6, 64, weidu);
contentPane.setCellValue(7, 64, address); //给地图绑定的三个单元格赋值
contentPane.setCellValue(8, 64, shijian);
// setTimeout(function() {
// FR.Chart.WebUtils.getChart(b).dataRefresh(); //刷新地图
// }, 1000);
// FR.Msg.alert("当前地址是:" + address);
} else {
FR.Msg.alert("无法获取当前地址");
}
};
if (msg.status == "0") { //高德api接口返回的状态码是0(请求失败)
FR.Msg.alert("经纬度转换地址出错:错误信息是" + msg.info + ",错误码是:" + msg.infocode + ",详情请访问:https://lbs.amap.com/api/webservice/guide/tools/info/"); //如果出错,弹出高德api返回的报错
}
},
error: function(info) { //请求失败时调用此函数
FR.Msg.alert("请求失败,请联系管理员。");
},
complete: function(XMLHttpRequest, status) { //请求完成后最终执行回调函数
if (status == 'timeout') { //超时,status还有success,error等值的情况
FR.Msg.alert("请求超时,请检查网络。");
}
},
timeout: 3000, //超时时间为3S
async: "false" //同步请求,和上面的ajax请求不是异步的,需要顺序执行
});
}
} else { //获取经纬度失败时执行此函数
FR.Msg.alert("错误:请检查手机网络和定位服务开关及权限。"); //数据分析app、企业微信、钉钉获取经纬度失败时返回报错信息
}
});这段JS中数值通过下面这种方式传到指定单元格,在决策报表中,用什么办法可以将数值传递给参数或者控件
contentPane.setCellValue(5, 64, jingdu);
contentPane.setCellValue(6, 64, weidu);
contentPane.setCellValue(7, 64, address); //给地图绑定的三个单元格赋值
contentPane.setCellValue(8, 64, shijian);