=============================静态数据=================================
<!doctype html> <html lang="en"> <head> <!-- <link rel="stylesheet" href="https://openlayers.org/en/v3.19.1/css/ol.css" type="text/css">--> <link href="v3.16.0/css/ol.css" rel="stylesheet" /> <style> .map { height: 400px; width: 100%; } </style> <!-- <script src="https://openlayers.org/en/v3.19.1/build/ol.js" type="text/javascript"></script>--> <script src="v3.16.0/build/ol.js"></script> <script src="../js/jquery.min.js"></script> <title>OpenLayers 3 example</title> </head> <body> <h2>My Map</h2> <div id="map" class="map"></div> <script type="text/javascript"> //$(function () { // alert(1); // var str = '{ "type": "Polygon", "coordinates": [[[122.07535436331365, 31.287773896004534], [122.07660470811187, 31.287773896004534], [122.07660470811187, 31.286523675043622], [122.07535436331365, 31.286523675043622], [122.07535436331365, 31.287773896004534]]] }'; // var arrycondinates = eval('(' + str + ')'); // console.log(arrycondinates.coordinates[0][0][0]); // alert(arrycondinates.coordinates.toString().split(',')); //}); //var url = 'http://31.16.1.101/arcgis/rest/services/shsw_JCDXT/MapServer'; var url = 'http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer'; //初始化图层 var arcgisLayer = [new ol.layer.Tile( { source: new ol.source.TileArcGISRest({ url: url }) })]; var map = new ol.Map({ target: 'map',//包含在地图的网页上的div元素 layers: arcgisLayer, view: new ol.View({//负责地图的中心点,放大,投影之类的设置。 // 设置上海为地图中心 center: ol.proj.transform([121.4671519444444, 31.23494649118933], 'EPSG:4326', 'EPSG:3857'), zoom: 8, // 限制地图缩放最大级别为10,最小级别为6 minZoom: 6, //maxZoom: 10 }) }); var fStyle1 = new ol.style.Style({ //图形样式 fill: new ol.style.Fill({ color: 'red' }), stroke: new ol.style.Stroke({ color: 'red', width: 2 }), image: new ol.style.Circle({ radius: 7, fill: new ol.style.Fill({ color: 'red' }) }) }); //var vectorLayer = new ol.layer.Vector(); ////定义矢量源 //var vectorSource = new ol.source.Vector(); //实例化一个矢量图层Vector作为绘制层 //标线绘制层Vector var szDrawLayer = new ol.layer.Vector({ source: new ol.source.Vector() }); // 定义画图要用到的坐标点数组 var point = [[121.61772816716022, 31.707848138871125], [121.61897851195846, 31.707848138871125], [121.61897851195846, 31.706597917910212], [121.61772816716022, 31.706597917910212], [121.61772816716022, 31.707848138871125]]; var dots1 = new Array(); for (var i = 0; i < point.length; i++) { point[i] = ol.proj.transform(point[i], 'EPSG:4326', 'EPSG:3857'); dots1.push(point[i]); } var newFeature = new ol.Feature(new ol.geom.Polygon([dots1])); //画图形 newFeature.setStyle(fStyle1); //给图形添加样式 szDrawLayer.getSource().addFeature(newFeature); //地图添加图形 map.addLayer(szDrawLayer); vectorLayer.getSource().addFeature(newFeature); //地图添加图形 map.addLayer(vectorLayer); </script> </body> </html>
==========================动态数据============================
数据库表
主要就是value 字段和geo 字段,geo字段存的值是 type 图形类型和坐标点。
调用一般处理程序返回数据
[{"VALUE":5.0,"GEO":"{ \"type\": \"Polygon\", \"coordinates\": [ [ [ 121.61772816716022, 31.707848138871125 ], [ 121.61897851195846, 31.707848138871125 ], [ 121.61897851195846, 31.706597917910212 ], [ 121.61772816716022, 31.706597917910212 ], [ 121.61772816716022, 31.707848138871125 ] ] ] }"},{"VALUE":5.0,"GEO":"{ \"type\": \"Polygon\", \"coordinates\": [ [ [ 121.29013783002307, 31.699096592144734 ], [ 121.29138817482131, 31.699096592144734 ], [ 121.29138817482131, 31.697846371183822 ], [ 121.29013783002307, 31.697846371183822 ], [ 121.29013783002307, 31.699096592144734 ] ] ] }"}]
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <link href="Libs/jquery-ui-1.11.4/jquery-ui.min.css" rel="stylesheet" type="text/css" /> <link href="Styles/style.css" rel="stylesheet" type="text/css" /> <!-- jQuery库 --> <script src="YM/lib/jquery-1.7.2.js"></script> <!--OL3库--> <script src="Libs/ol/ol-debug.js" type="text/javascript"></script> <link href="Libs/ol/ol.css" rel="stylesheet" type="text/css" /> <!-- 自定义js参数设置 --> <script src="js/pama.js"></script> <script src="js/baseMap.js"></script> <script> //实例化一个矢量图层Vector作为绘制层 //标线绘制层Vector var szDrawLayer = new ol.layer.Vector({ source: new ol.source.Vector() }); //获取所有的水质坐标信息 $(function () { //调用一般处理程序返回的数据,上面已经贴出返回的数据格式 var urlStr = encodeURI(purl + "data_GetGeoSZ.ashx"); $.ajax({ type: "get", dataType: "json", url: urlStr, success: function (data) { var resInfoArray = eval(data); if (resInfoArray == null) { alert("查询信息失败,请检查数据!"); return; } //显示风险源企业信息 for (var i = 0; i < resInfoArray.length; i++) { var geoArray = eval('(' + resInfoArray[i].GEO + ')');// resInfoArray[i].GEO; // alert(geoArray.coordinates); //level 判断显示的图层样式,type 表示的是点线面,gearray.coordinates[0] 坐标点 如下makers
// var makers = [[121.61772816716022, 31.707848138871125], [121.61897851195846, 31.707848138871125], [121.618 97851195846, 31.706597917910212], [121.61772816716022, 31.706597917910212], [121.61772816716022, 31.707848138871125]];
drawPolygon(resInfoArray[i].VALUE, geoArray.type,geoArray.coordinates[0]);
}
map.addLayer(szDrawLayer);
}
});
});
function drawPolygon(level, type, pointsStr) {
var color = "#73b2ff";
if (level == "2")
color = "#b2ddf7";
if (level == "3")
color = "#beb1a1";
if (level == "4")
color = "#9b856e";
if (level == "5")
color = "#7a624a";
var pointss = pointsStr;
var dots1 = new Array();
for (var i = 0; i < pointss.length; i++) {
pointss[i] = ol.proj.transform(pointss[i], 'EPSG:4326', 'EPSG:3857');
dots1.push(pointss[i]);
}
var newFeature = new ol.Feature(new ol.geom.Polygon([dots1])); //画图形
var fStyle1 = new ol.style.Style({ //图形样式
fill: new ol.style.Fill({
color: color
}),
stroke: new ol.style.Stroke({
color:color,
width: 2
}),
image: new ol.style.Circle({
radius: 7,
fill: new ol.style.Fill({
color:color
})
})
});
newFeature.setStyle(fStyle1); //给图形添加样式
szDrawLayer.getSource().addFeature(newFeature); //地图添加图形
}
function parsePointsb(color, type, pointsStr) {
var polygonFeature = null;
var lineFeature = null;
var pointFeature = null;
var allFeature = null;
//绘制的几何图形要素
switch (type) {
case "Polygon": //面
allFeature = new ol.Feature(
new ol.geom.Polygon(pointsStr));
case "line"://线
allFeature = new ol.Feature(
new ol.geom.LineString(pointsStr));
case "point"://点
allFeature = new ol.Feature(new ol.geom.Point(pointsStr));
default:
}
//实例化一个矢量图层Vector作为绘制层
var source = new ol.source.Vector({
features: allFeature
});
var vector = new ol.layer.Vector({
source: source,
style: new ol.style.Style({
fill: new ol.style.Fill({
color: color
}),
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),
image: new ol.style.Circle({
radius: 7,
fill: new ol.style.Fill({
color: '#ffcc33'
})
})
})
});
map.addLayer(vector); //将绘制层添加到地图容器中
}
</script>
</head>
<body style="margin: 0px">
<!-- 功能模块面板 end -->
<!-- 地图容器-->
<div id="map">
<!-- Popup -->
<div id="popup" class="ol-popup">
<div id="popup-closer" class="ol-popup-closer"></div>
<div id="popup-content">
</div>
</div>
<input type="hidden" id="h_son" />
</div>
</body>
</html>
下面贴的是basemap.js
var url = 'http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer'; //初始化图层 var arcgisLayer = [new ol.layer.Tile( { source: new ol.source.TileArcGISRest({ url: url }) })]; //初始化地图容器 var map = new ol.Map({ layers: arcgisLayer,//[googleLayer], target: 'map', //地图容器div的ID view: new ol.View({ // 设置上海为地图中心 center: ol.proj.transform([121.4671519444444, 31.23494649118933], 'EPSG:4326', 'EPSG:3857'), zoom: 8, // 限制地图缩放最大级别为10,最小级别为6 minZoom: 6, }) });
上面是个人的项目上遇到的根据坐标点画图,新手,老鸟勿喷,比我还新的如果看不懂,可以给我留言。