<div id="rcp2_map" class="smallmap" style="width: 100%; height: 100%;"></div>
var options = {
projection : "EPSG:4326",
center : new OpenLayers.LonLat(105.5, 39.5)
};
var map = new OpenLayers.Map('rcp2_map', options);
var wms = new OpenLayers.Layer.WMS("OpenLayers WMS",
// geoserver所在服務器地址
// "http://192.168.1.120:8080/geoserver/wms",
"http://192.168.1.15:8088/geoserver/china-rail/wms", {
layers : "china-rail:大公雞"
});
var wms= new OpenLayers.Layer.OSM();
// 添加wms圖層
map.addLayer(wms);
到此咱們的地圖就顯示了,咱們來看看想過吧,我拿的是我服務的地圖,能夠不怎麼好看,咱們只要效果
javascript
滾動鼠標滾動鍵放大地圖顯示
前端
在地圖顯示方面咱們能夠設置的,好比說以什麼地方中心顯示呢,以多打的比例顯示呢,設置中心點在上面的代碼已經提到了,下面我貼個比例顯示的代碼java
map.zoomTo(5); // 以第5級方式顯示地圖
// 添加control空間
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
map.addControl(new OpenLayers.Control.Scale);
下面咱們在看看點擊Map事件和定位功能吧。json
定位說白了就是以某個點中心顯示,而後在把這個點給高亮標註出來咱們先標註這個點在這支中心點瀏覽器
點擊很容易只要咱們註冊一下事件就行了,我選擇在Map控件上面註冊這個點擊事件,大家根據本身的須要選擇控件注 服務器
//拿到座標
var jd = Number(document.getElementById('jd').value);
var wd = Number(document.getElementById('wd').value);
if(document.getElementById('jd').value==""){
jd=116.3;
}
if(document.getElementById('wd').value==""){
wd=39.9;
}
//定義一個box層
var boxes = new OpenLayers.Layer.Boxes("Boxes");
if (this.box != null) {
this.box.display(false); //清除上一次的區域標記
}
//定義一個Bounds
bounds = new OpenLayers.Bounds();
//有參數生成兩個經緯度
var lonlat1 = new OpenLayers.LonLat(jd, wd);
var lonlat2 = new OpenLayers.LonLat(jd, wd);
bounds.extend(lonlat1);
bounds.extend(lonlat2);//生成一個經緯度範圍的bounds
box = new OpenLayers.Marker.Box(bounds);
box.events.register("click", box, function(e) {
this.setBorder("blue");
});//註冊box的點擊事件
boxes.addMarker(box);
map.addLayer(boxes);
map.centerLayerContainer(lonlat1,6);
map.panTo(lonlat1); //平移到範圍的中心點
map.events.register("click", map, function(e) {
var t=e;
//獲取經緯度
var lonlat = map.getLonLatFromPixel(e.xy);
});
var raster = new ol.layer.Tile({
source: new ol.source.OSM()
});
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: './source/china.json',
format: new ol.format.GeoJSON()
})
});
var view = new ol.View({
// the view's initial state
center: search,
zoom: 5
});
var map = new ol.Map({
layers: [raster, vector], target: 'map', view: view });
看看效果
markdown
雙擊放大地圖顯示
app
這裏的定位和點擊就草草說說了ui
點擊
map.on('singleclick',mapClick);
function mapClick(e){
var pixel = map.getEventPixel(e.originalEvent);
var featureInfo = map.forEachFeatureAtPixel(pixel,
function (feature, layer) {
return {feature:feature,layer:layer};
});
var coordinate = e.coordinate;
var hdms = ol.coordinate.toStringHDMS(ol.proj.transform(
coordinate, 'EPSG:3857', 'EPSG:4326'));
if (featureInfo!==undefined&&featureInfo!==null
&&featureInfo.layer!==null)
{
alert(hdms+"\n這裏屬於"+featureInfo.feature.get("name")+"省");//顯示點擊區域的
console.log('打印選擇要素');
console.log(featureInfo .feature);
console.log('打印選擇要素所屬Layer');
console.log(featureInfo .layer);
}else{
alert(hdms+"\n這裏不屬於中國或者這裏是大海");//顯示點擊區域的
}
}
定位
view.setCenter(ol.proj.fromLonLat([Number(document.getElementById('jd').value), Number(document.getElementById('wd').value)]));
裏面用到的china.json數據下載地址:http://download.csdn.net/detail/u013132051/9595986this
下面本人繼續更新WebGis的後續精準操做