要知道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加载手绘地图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)