換了新公司,接觸新行業,半路出家,看着別人的代碼,看着api慢慢理解。
需求如下;已知兩點坐標求距離。
思路,沒有,站在同事的肩膀上踩路子,給的這個鏈接 https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-GeometryService.html#distance
綜合看完,基本調用如下:
new GeometryService(url).distance(new DistanceParameters(distanceUnit,geodesic,geometry1,geometry2),function(){})
注意:這個是基於地圖的,地圖一定得打開;geometry1 看是在哪種多邊形下,兩點的距離 是在 esri/geometry/Point 模塊下的;創建方法為
getTwoPointDis(x1,y1,x2,y2,cb) //傳入點參數
function getTwoPointDis(x1,y1,x2,y2,cb){
var p1,p2;
map.task.getNewPoint(x1,y1,function(e){
p1 = e
});
map.task.getNewPoint(x2,y2,function(e){
p2 = e
});
var dd = new DistanceParam();
dd.geometry1 = p1;
dd.geometry2 = p2;
map.task.geometryService(dd, function(e){
var e = e.toFixed(3);
cb(e)
});
}
geometryService:(dd,successCallBack,errorCallBack){ //計算距離參數
var distanceParameters = new DistanceParameters();
distanceParameters.geometry1 = param.geometry1;
distanceParameters.geometry2 = param.geometry2;
distanceParameters.geodesic = param.geodesic;
distanceParameters.distanceUnit = param.distanceUnit;
geoService.distance(distanceParameters, successCallBack, errorCallBack);
}
getNewPoint:function(x,y,successCallBack){ //初始化點
var p1 = new esri.geometry.Point();
p1.x = x;
p1.y = y;
p1.spatialReference = this._impl._map.spatialReference;
successCallBack(p1)
}