openlayers怎样实现地图的缩放都呈现在一个固定的框中
1个回答
2016-08-05 · 知道合伙人生活技巧行家
关注
展开全部
要知道openlayers是客户端的代码,需要向服务器端请求数据才能知道对象在哪里啊,然后实现定位,从服务器端获得了对象的Extent之后,加上gutter,就可以居中定位地图了;参考实例如下://初始地图 function init(){ vectors = new OpenLayers.Layer.Vector(); geojson = new OpenLayers.Format.GeoJSON(); map.addLayer(vectors); } //通过DWR异步取得GeoJSon串,交由OpenLayers.Format.GeoJSON来处理. function locorie(){ //异步发出请求 dwrService.orie(orieSeri,function(data){ //通过OpenLayers.Format.GeoJSON处理服务端提供的GenJSon串 var features = geojson.read(data,"FeatureCollection"); if(features) { //将结果展示到地图上 vectors.addFeatures(features); } }); } //十秒更新一次数据 function startOrie(){ var t=setTimeout("locorie();startOrie();",10000); } public String[] orie(String orieSeri) { String orieStr = ""; boolean state = true; if (null == orieStr || "".equals(orieSeri)) { state = false; } int dataSeri = Integer.parseInt(orieSeri); List list = null; if (state) { // 获得dataSeri之后的位置数据 Location.getDataSeri >= dataSeri list = locDao.findLocByFlow(dataSeri); } if (state && (list == null || list.size() == 0)) { // 没有数据 state = false; } if (state&&(list.size() == 1 && dataSeri == list.get(0).getDataSeri() .intValue())) { // 没有新的数据 state = false; } if (state) { LineString line = new LineString(); StringBuffer geo = new StringBuffer(); Point pointEnd = new Point(); Feature feaPoint = new Feature(pointEnd); Map propoint = new HashMap(); feaPoint.setProperties(propoint); for (int i = 0; i properties = new HashMap(); properties.put("color", "#1A60CA"); feaLine.setProperties(properties); List components = new ArrayList(); components.add(feaLine); components.add(feaPoint); FeatureCollection feaCol = new FeatureCollection(components); orieStr = feaCol.draw(); } } 服务器端生成json串,用装饰者模式写了一个模块,只要调用这个模块的API就会生成需要的Json串,如下:
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询