Commit f0ffe6bf by lixinming

no message

parent 3f4cca13
......@@ -6,7 +6,6 @@
"dependencies": {
"@alicloud/sms-sdk": "^1.1.6",
"@types/node": "^10.12.18",
"baidumap": "0.0.4",
"compression": "^1.7.4",
"express": "^4.17.1",
"express-async-handler": "^1.1.4",
......
......@@ -32,7 +32,6 @@ import { findEnterpriseInitialTeamsByParam } from "../../data/enterprise/initial
import { count } from "console";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
import { changeEnumValue } from "../../util/verificationEnum";
import { changeAddresCode, isPointInPolygon } from "../../tools/changeAdd";
const xlsx = require('node-xlsx');
const path = require('path');
......
......@@ -10,7 +10,7 @@ import { selectEnterpriseFinancingAmount } from "../data/enterprise/financingInf
import { selectEnterpriseBusinessAmount } from "../data/enterprise/quarterTask/businessdata";
import { addSystemLabel, findOnceLabel } from "../data/label";
import { changeAddToString, getLabelId } from "../tools/system";
import { changeAddresCode, isPointInPolygon } from "../tools/changeAdd";
import { addressIsInZJ } from "../tools/transCode";
import moment = require("moment");
/**企业标签操作 */
......@@ -245,7 +245,7 @@ export async function systemLabel() {
}
}
if (logonAddress && fuHuaState == FUHUASTATE.实体孵化) {
let isInZJ = await addIsInZJ(logonAddress);
let isInZJ = await addressIsInZJ(changeAddToString(logonAddress));
if (isInZJ) {
logonAddressSuccess = true;
}
......@@ -406,22 +406,6 @@ export async function initSystemLabelData() {
addSystemLabel(systemLabelList);
}
/**
* 判断地址是否在张江
* @param addList
*/
async function addIsInZJ(addList) {
let addStr = changeAddToString(addList);
if (!addStr) return false;
let resData:any = await changeAddresCode(addStr, addList[0]);
if (!resData.error) {
let result = isPointInPolygon(resData);
return result;
} else {
console.log("地图报错", resData.errMsg);
}
return false;
}
......
......@@ -179,6 +179,7 @@ export function getRandomId(uscc:string) {
}
export function changeAddToString(address) {
if (!address) return "";
let str = "";
address.forEach((item, index) => {
if (index == 0 && item == "上海市") return;
......
var baiduMap = require('baidumap');
var bdmap = baiduMap.create({'ak':'tXZNOtuhb3PJHwax0eb7DkgHP9Zh5QOb'});
import { areaList } from "../config/area";
import { BizError } from "../util/bizError";
import { get } from "../util/request";
export async function changeAddresCode(address, city) {
let p = {
/**
* 地址是否属于张江
*/
export async function addressIsInZJ(address) {
/**使用百度地图获取经纬度 */
let param = {
address:address,
output:"json",
ak:"tXZNOtuhb3PJHwax0eb7DkgHP9Zh5QOb",
// callback:"showLocation"
}
let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", p);
try {
if (reuslt.status == 0) {
return reuslt.result.location
}
else return {error:true, errMsg:reuslt.message};
}catch(err) {
return{error:true, errMsg:reuslt} ;
let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", param);
if (reuslt.status != 0 || !reuslt.result.location) {
throw new BizError("获取张江地址错误", reuslt.message, JSON.stringify(reuslt));
}
console.log();
return
return new Promise((resolve, reject) => {
var geocoderOption = {address, city};
let point = reuslt.result.location;//转换好的经纬度
bdmap.geocoder(geocoderOption, function(err, reuslt){
if (err) {
resolve({error:true, errMsg:err});
} else {
try {
let resObj = JSON.parse(reuslt);
if (resObj.status == 0) {
resolve(resObj.result.location)
}
else resolve({error:true, errMsg:resObj.message});
}catch(err) {
resolve({error:true, errMsg:reuslt});
}
}
});
});
}
//使用射线法
export function isPointInPolygon(point) {
/**射线法判断是否属于各个范围 命中一个就返回true*/
let isInside = false;
for (let k = 0; k < areaList.length; k++) {
let polygon:any = areaList[k];//单个区域
......@@ -55,14 +30,51 @@ export function isPointInPolygon(point) {
isInside = itemIsPointInPolygon(point, polygon);
if (isInside) break;
}
return isInside;
}
// /**
// * 获取经纬度
// * @param address
// * @param city
// * @returns
// */
// export async function getAddressLatAndLng(address, city) {
// let param = {
// address:address,
// output:"json",
// ak:"tXZNOtuhb3PJHwax0eb7DkgHP9Zh5QOb",
// }
// let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", param);
// if (reuslt.status == 0) {
// return reuslt.result.location
// }
// return {error:true, errMsg:reuslt.message||JSON.stringify(reuslt) };
// }
// //使用射线法
// export function isPointInPolygon(point) {
// let isInside = false;
// for (let k = 0; k < areaList.length; k++) {
// let polygon:any = areaList[k];//单个区域
// if(polygon[0].lat != polygon[polygon.length-1].lat || polygon[0].lng != polygon[polygon.length-1].lng) {
// polygon.push(polygon[0]);
// }
// isInside = itemIsPointInPolygon(point, polygon);
// if (isInside) break;
// }
// return isInside;
// }
function itemIsPointInPolygon(point,pts){
var N = pts.length; //pts [{lat:xxx,lng:xxx},{lat:xxx,lng:xxx}]
var boundOrVertex = true; //如果点位于多边形的顶点或边上,也算做点在多边形内,直接返回true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment