利用OpenLayers怎样实现定位查询

利用OpenLayers怎样实现定位查询,第1张

要知道openlayers是客户端的代码,需要向服务器端请求数据才能知道对象在哪里啊,然后实现定位,从服务器端获得了对象的Extent之后,加上gutter,就可以居中定位地图了;

参考实例如下:

//初始地图

function init(){

vectors = new OpenLayersLayerVector();

geojson = new OpenLayersFormatGeoJSON();

mapaddLayer(vectors);

}

//通过DWR异步取得GeoJSon串,交由OpenLayersFormatGeoJSON来处理

function locorie(){

//异步发出请求

dwrServiceorie(orieSeri,function(data){

//通过OpenLayersFormatGeoJSON处理服务端提供的GenJSon串

var features = geojsonread(data,"FeatureCollection");

if(features) {

//将结果展示到地图上

vectorsaddFeatures(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 = IntegerparseInt(orieSeri);

List<Location> list = null;

if (state) {

// 获得dataSeri之后的位置数据 LocationgetDataSeri >= dataSeri

list = locDaofindLocByFlow(dataSeri);

}

if (state && (list == null || listsize() == 0)) {

// 没有数据

state = false;

}

if (state&&(listsize() == 1 && dataSeri == listget(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<String, String> propoint = new HashMap<String, String>();

feaPointsetProperties(propoint);

for (int i = 0; i < listsize(); i++) {

geoappend("[" + listget(i)getCurLoc() + "]");

if (i != (listsize() - 1)) {

geoappend(",");

}

}

linesetLine(geotoString());

Feature feaLine = new Feature(line);

Map<String, String> properties = new HashMap<String, String>();

propertiesput("color", "#1A60CA");

feaLinesetProperties(properties);

List<Component> components = new ArrayList<Component>();

componentsadd(feaLine);

componentsadd(feaPoint);

FeatureCollection feaCol = new FeatureCollection(components);

orieStr = feaColdraw();

}

}

服务器端生成json串,用装饰者模式写了一个模块,只要调用这个模块的API就会生成需要的Json串,如下:

1问题背景:

一般在写轨迹回放的时候,车辆行进方向会有一个朝向的问题,这个需要实时计算,不断修正车子前进方向。

2openlayers样式(olstyleIcon),角度是按照顺时针旋转的。

3加载小车图标测试

(1)初始小车图标朝向

参考资料:

openlayers 文档地址: >

在Openlayers中, 我们可以添加可编辑的点, 线, 多边形对象, 也可以拿到编辑结束后的回调事件, 但是在官方文档中, (应该是我疏忽)并没有找到在编辑完成的事件中, 怎么获取到编辑之后的经纬度数据, 经过自己调试, 找到了对应的取值地方

thismodify = new olinteractionModify({source: thismodify_source});

mapaddInteraction(thismodify);

thismodifyon('modifyend', thisModifyIconEnd);

都是在modifyend对应的回调方法中,获取到修改之后的经纬度数据

thisModifyIconEnd =function(evt){

var extent = evtfeaturesitem(0)getGeometry()getCoordinates()

}

其中extent就是修改后的坐标

thisModifyLineEnd = function(evt){

var extent = evtfeaturesitem(0)getGeometry()getCoordinates()

}

其中extent就是修改后的坐标

thisModifyPolygonEnd = function(evt){

var extent = evtfeaturesitem(0)getGeometry()getCoordinates()[0];

};

其中extent就是修改后的坐标

以上就是关于利用OpenLayers怎样实现定位查询全部的内容,包括:利用OpenLayers怎样实现定位查询、Openlayers样式图标角度计算问题、移动端使用openlayers加载手绘地图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10148546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存