948ESRI Javascript многоугольник
Я использую esri javascript 3.5. У меня есть список точек, которые я хочу нарисовать в многоугольнике. Я нашел этот https://developers.arcgis.com/en/javascript/jssamples/util_relation.html но я не знаю, как его использовать. Могу ли я узнать, где взять образец? Скажем, у меня есть множество точек...
dojo.require("esri.map");
dojo.require("esri.graphic");
var map ;
function init() {
map = new esri.Map("map",{
basemap:"topo",
center:[103.8, 1.35], //long, lat
zoom:13
});
dojo.connect(map,"onLoad", loadData);
}//end init
function loadData(){
var arr =[];
var p = new esri.geometry.Point(103.8, 1.35);
arr.push(p);
p = new esri.geometry.Point(103.8, 1.35222);
arr.push(p);
var polySymbolRed = new esri.symbol.SimpleFillSymbol(
esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([0, 0, 0, 1]), 1),
new dojo.Color([255, 0, 0, 0.2])
);
var gra = new esri.Graphic(arr,polySymbolRed);
map.graphics.add(gra);
}
2 ответа
Решение
Вы очень близки, вам просто нужно немного помассировать этот массив, прежде чем создавать .Graphic
:
var poly = new esri.geometry.Polygon({
"spatialReference": {" wkid":4326 },
"fields": [{
"name": "FID",
"type": "esriFieldTypeOID",
"alias": "FID",
"domain": null
},...]
});
var ring = new Array();
//push points into array
poly.addRing(ring);
var gra = new esri.Graphic(poly,polySymbolRed);
//Maybe:
//var gra = new esri.Graphic(esri.geometry.geographicToWebMercator(poly),polySymbolRed);
//depending on what SR your map is using...
var polygon = new Polygon(new SpatialReference({wkid:4326}));
polygon.addRing([[-120,30],[-120,40],[-110,40],[-110,30],[-120,30]])
var point = new Point(-115, 35, {"spatialReference":{"wkid":4326 }})
polygon.contains(point); //returns true