标签: openlayers

在GeoDjango的自定义视图中渲染GeoQuerySet的空间数据

我刚刚在GeoDjango上开始了我的第一个项目.

事实上,使用GeoDjango支持的管理应用程序,我们都很有可能查看/编辑与当前对象相关的空间数据.

问题是在填充对象后,我需要在一个地图上一次渲染多个对象的关联几何体.我可以将其实现为模型操作,重定向到自定义视图.我只是不知道,如何在视图中包含OpenLayers小部件以及如何在我的GeoQuerySet中渲染我的复合几何.

我非常感谢来自经验丰富的GeoDjango程序员的任何暗示.

django view geodjango openlayers

14
推荐指数
1
解决办法
8586
查看次数

如何将距离从度数转换为米?

我正在使用OpenLayers和一个普通的墨卡托地图,我试图通过在latlong中找到一个点网格来对边界框进行采样.bbox以latlon表示,例如

48.1388,-15.3616,55.2057,-3.9359
Run Code Online (Sandbox Code Playgroud)

我可以用度数定义距离(例如x:2.5,y:2.4)并从那里计算出点数.但我想用(例如50000)来表达这个距离,以便将它与用户心态联系起来(人们理解米,而不是度数).我怎样才能转换这个距离?我知道如何重新投射一个点,但不是距离.

谢谢你的任何提示!Mulone

transform openlayers haversine map-projections proj4js

14
推荐指数
2
解决办法
5万
查看次数

Firefox window.controllers已弃用.不要将它用于UA检测

我的网站适用于Chrome,IE和Safari,但是当我在Firefox中加载它时,Firefox抱怨说"不推荐使用window.controllers.不要将它用于UA检测." 此代码在OpenLayers API(OpenLayers 2,最新版本)中,因此我无法更改它.有什么东西可以放进我的代码中,以便它可以在Firefox中运行吗?

javascript firefox openlayers

14
推荐指数
1
解决办法
1万
查看次数

mapquest直接磁贴访问已停止

截至2016-07-11,MapQuest已停止直接访问其瓷砖.他们似乎只支持Leaflet,iOS和Android SDK.知道如何让Openlayers再次使用MapQuest,或者我们应该考虑另一种选择吗?谢谢.

openlayers mapquest

14
推荐指数
1
解决办法
1万
查看次数

OpenLayers:双击时禁用缩放

默认情况下,OpenLayers会在用户双击地图时放大.

禁用此行为的最佳方法是什么?

javascript maps openlayers

13
推荐指数
3
解决办法
7129
查看次数

如何在OpenLayers中的矢量图层上以编程方式选择要素?

我目前正在寻找一种解决方案来选择(或突出显示)OpenLayers.Layer.Vector中的向量.

我已经构建了一个简单的网格表,用户可以在其中选择一个向量(以WKT格式的字符串给出),该向量应突出显示图层上的相应向量.当用户访问网站时,网格表中的所有向量都将绘制到地图上的矢量图层.

我发现我需要OpenLayers.Control.ModifyFeatureselectFeature(feature)函数或者OpenLayers.Control.SelectFeature(参见dev.openlayers.org/apidocs/files/OpenLayers/Control/SelectFeature-js.html的select(功能(可能不存在或不再存在?).请参阅邮件列表中的帖子:osgeo-org.1803224.n2.nabble.com/Programatically-Select-a-Feature-tt2192485.html# a2193928更多信息.

我尝试了以下但没有成功,所以我希望有人可以抓住这些代码行,并可以向我展示一个有效的代码片段;-)

// ... some initializing code
this.vlayer = new OpenLayers.Layer.Vector("VectorLayer");  // VectorLayer

// some controls
this.openLayerControlPoint = new OpenLayers.Control.DrawFeature(this.vlayer, OpenLayers.Handler.Point);
this.openLayerControlPolygon = new OpenLayers.Control.DrawFeature(this.vlayer, OpenLayers.Handler.Polygon);
this.openLayerControlModify = new OpenLayers.Control.ModifyFeature(this.vlayer, {
  mode: OpenLayers.Control.ModifyFeature.RESHAPE | OpenLayers.Control.ModifyFeature.DRAG,
  standalone: false
});

// just deactivate to make sure everything is really deactivated
this.openLayerControlPoint.deactivate();
this.openLayerControlPolygon.deactivate();
this.openLayerControlModify.deactivate();

// add the just created layer to the map
this.map.addLayer(this.vlayer);

// add all (deactivated) controls to the map
this.map.addControl(this.openLayerControlPoint);
this.map.addControl(this.openLayerControlPolygon);
this.map.addControl(this.openLayerControlModify);
Run Code Online (Sandbox Code Playgroud)

后来的代码: …

javascript openlayers

13
推荐指数
1
解决办法
2万
查看次数

使用OpenLayers在两点之间绘制线条

我有两个点,lolLat为0,10和30,0

现在在此处绘制标记我使用此变换同时为其生成标记

lonLat.transform(
                 new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
                 map.getProjectionObject() // to Spherical Mercator Projection
             )
Run Code Online (Sandbox Code Playgroud)

我怎样才能在它们之间绘制线条有没有办法在openlayers中做到这一点,我已经尝试用矢量图层中的线串做它但它似乎对我不起作用.

point line openlayers

13
推荐指数
2
解决办法
3万
查看次数

TypeError:float()参数必须是Django距离中的字符串或数字

我试图从我的模板中获取值,kmdistance但是当我查看页面时它会返回错误.

这是views.py

def display_maps(request):
    #bases for city proper
    pnt = ButuanMaps.objects.get(clandpin='162-03-0001-017-33').geom

    #landproperty__sownerid__id=5 is for government user
    kmdistance = request.GET.get("kmtocity", None)
    mysection = (request.GET.get("mysection", None))
    query_section = Section.objects.all().order_by('id')
    ...
    query_maps = ButuanMaps.objects.filter(landproperty__sownerid__id=5, geom__distance_lte=(pnt, D(km=kmdistance)), ssectionid__id=mysection)
    ...
Run Code Online (Sandbox Code Playgroud)

这是template.html

  <select name="kmtocity" class="form-control">
      <option type="text" value="empty">Select Km. away from City Proper</option>
      <option value="1">1</option>
      <option value="5">5</option>
      <option value="10">10</option>
      <option value="15">15</option>
      <option value="20">20</option>
   </select>
Run Code Online (Sandbox Code Playgroud)

当我尝试将值放在距离时,它工作正常.

python django openlayers

13
推荐指数
1
解决办法
4万
查看次数

node.js和geoserver CORS

我有node.js服务器0.10.12和express.js 4.8.5.Node.js是Web服务器,包括openlayers 3.9.0.

Geoserver 2.1.3服务于WMS层.稍后,我将实现矢量图层.

只有一条路线(索引页面)

var routes = require('./routes/index');
Run Code Online (Sandbox Code Playgroud)

index.js包含

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('index', { title: 'openlayers3 testing', head: 'Welcome' });
  next();
});

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

所以app.js有了

var routes = require('./routes/index');//explained above

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
Run Code Online (Sandbox Code Playgroud)

我为CORS添加了以下内容

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, …
Run Code Online (Sandbox Code Playgroud)

geoserver openlayers node.js express openlayers-3

13
推荐指数
1
解决办法
1512
查看次数

使用OpenLayers 4和Angular 5

我正在尝试在Angular 5中使用OpenLayers 4.

基本上我只是想从官方的OpenLayers网站实现QuickStart示例.

到目前为止我做了什么:

  1. npm install ol --save 下载ol包
  2. angular-cli.json将这些行添加到angular-cli.json中.看到这必须在Stackoverflow上的另一个例子上完成.ol.css文件存在.ol.js文件没有.所以我不知道这是正确还是错误的方式,但它显然不起作用.

我的角度项目包括3个组件:

 -app
 --console
 --map
 --sidebar

 app.component.css
 app.compinent.html
 app.component.spec.ts
 app.component.ts
 app.module.ts
Run Code Online (Sandbox Code Playgroud)

map.component.html

import { Component, OnInit } from '@angular/core';
import * as ol from '../../../node_modules/ol';

@Component({
  selector: 'app-map',
  templateUrl: './map.component.html',
  styleUrls: ['./map.component.css']
})
export class MapComponent implements OnInit {
  mapId: string;
  map: ol.Map = undefined;

  constructor() { }

  ngOnInit() {
    this.map = new ol.Map({
      target: this.mapId,
      layers: [
        new ol.layer.Tile({
          source: new ol.source.OSM(),
        }),
      ],
      view: new …
Run Code Online (Sandbox Code Playgroud)

openlayers angular angular5

13
推荐指数
2
解决办法
2万
查看次数