GIS地图引入
GIS地图的引入首先需要将地图发布在iserver中,然后获取到它发布的URL
var host, url;
host = 'http://192.168.191.1:8090';//域名
url = host + '/iserver/services/map-Map/rest/maps/Map';//行政图
//创建地图控件
function init() {
map = new SuperMap.Map ("map");
//创建分块动态REST图层,该图层显示iserver 8C 服务发布的地图,
//其中"world"为图层名称,url图层的服务地址,{transparent: true}
//maxResolution设置到url的可选参数图层实例化的时候设置图层最大的分辨率,默认最大的是360度/256像素(投影为4326),
//相当于缩放级别为0级。 不同的投影下maxResolution会不同,内部会进行计算。
//transparent(图层是否透明,默认为false) 和cacheEnabled(是否使用服务端的缓存,默认为true)
layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url,null, {maxResolution:"auto"});
layer.events.on({"layerInitialized": addLayer});
}
function addLayer() {
//将Layer图层加载到Map对象上
map.addLayer(layer);
//出图,map.setCenter函数显示地图
map.setCenter(new SuperMap.LonLat(0, 0), 0);
}
然后我们还要获取数据库的地图URL,首先我们要创建一张新的数据库表,记录地图的地址
然后引入到项目中,并给它创建一个方法
//查询地图url
public ActionResult getMapUrl()
{
var dbMapUrl = myShenZhenBaoAnEntities.S_MapPath.ToList();//查询url
return Json(dbMapUrl, JsonRequestBehavior.AllowGet);
}
然后引用方法
//获取数据库的地图url
$.post("/index/getMapUrl", function (data) {
console.log(data[1]);
if (data.length > 0) {
host = data[0].Port;//域名
url = host + data[1].Port;//行政图
layer = new SuperMap.Layer.TiledDynamicRESTLayer("Map",
url,//图层的服务地址,是数组也可以是单个url,前者支持多地图服务轮询出图,大大提高显示速度。
{
transparent: true,//transparent(图层是否透明,默认为false)
cacheEnabled: true//cacheEnabled(是否使用服务端的缓存,默认为true)
}, {
maxResolution: "auto",// 在图层实例化的时候设置图层最大的分辨率,默认最大的是360度/256像素(投影为4326),相当于缩放级别为0级。 不同的投影下maxResolution会不同,内部会进行计算。
// useCanvas: false,////设置是否将一个图层用Canvas元素显示,默认为true,使用Canvas显示。 图层在初始化时会进行浏览器检测,若不支持Canvas方式显示时,自动处理为Image 方式出图,该属性会被设置成false。
useCORS: true//使用跨域资源共享策略,这时请求的瓦片必须带有”access-control-allow-origin”响应头, 但是此时瓦片不带cookies信息,如果要带上cookies的信息,还要加一个响应头——”access-control-allow-credentials”, 如果”access-control-allow-origin”响应头不能为”*”,否则也没有cookies信息。默认为:false
//如果useCORS设置了 false ,就不能截图了,就会出错
});
layer.isBaseLayer = true;
layer.bool = true;
//监听图层信息加载完成事件
layer.events.on({
"layerInitialized": addLayer1,//底图加载完成事件
"loadstart": loadstartMap,//当图层开始加载时触发事件。
"loadend": loadendMap//当图层结束加载时候触发事件。
});
}
});
markerLayermzj = new SuperMap.Layer.Markers("markerLayerPoint");
});
最后显示出iserver中的地图