当我们成功创建好一个地图的时候,需要在地图上定位一些符号。
这些坐标信息来自于数据库(业务数据库/空间数据库)
1:从业务数据库读取符号的坐标信息
先从后台连接业务数据库,读取对应表中的数据;
封装成json格式的数据,传回到前台js中;
然后在js中先定义一个图层,遍历这个json数据中的每一个点,并且把这些点都添加到这个图层中,最后再将这个图层添加到地图中。
示例代码:
/**
* 显示地图点.
* json的格式[{"name":"name1","x":"x1","y":"y1","img":"img1","content":"content1"}...]
*/
function displayPoints(json){
var layer = esri.layers.GraphicsLayer({id:"layer"});
$.each(json, function(index){
var x = this.x;
var y = this.y;
var img = this.img;
var pt = new esri.geometry.Point([x,y]);
var pictureMarkerSymbol = new esri.symbol.PictureMarkerSymbol(img, 20, 20);
var g = new esri.Graphic(pt, pictureMarkerSymbol);
var template = new esri.InfoTemplate();
template.setTitle(this.name);
template.setContent(this.content);
g.setInfoTemplate(template);
layer.add(g);
});
map.addLayer(layer);
}
2:从空间数据库获定位
主要用的是query
function query(){
var queryTask = new esri.tasks.QueryTask(url);
var query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["*"];
query.where = "";//这里添加查询条件
queryTask.execute(query,callBack);
}
function callBack(result){
var symbol = new esri.symbol.PictureMarkerSymbol(img, 20, 20);
/*如果是面的话
symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0,0,255,0.35]), 1),new dojo.Color([125,125,125,0.35]));*/
//遍历查询结果
for (var i=0; i<result.features.length; i++){
var g = result.features[i];
g.setSymbol(symbol);
}
}