1

我正在使用backbone.js,但我很难理解地理位置的使用。

我将尝试解释这个问题,因为该应用程序很大并且它有很多类并且很难理解:

我们有一个“A”视图类,它在 B 和 C 类之间切换视图。在 C 类中,我们可以设置另一个 D 或 E,最后一个类将我们的地图放在 1 属性中。

如您所见,我们有这棵树:

  • 一个看法)
  • >B
  • >C (查看)
  • >>D
  • >>E(视图,带有将存储 ol.map 对象的属性。)

好的,当我需要启动此引擎并在应用程序请求后选择地理位置时,问题就开始了。E类的顺序如下:

构造函数:定义地图,它可以是默认(OSM)或传输(传输层)。当我们创建对象时,只需一个字符串即可知道应用程序需要什么。

Render:  load the next code.
var view = new ol.View2D({
      // the view's initial state
      center: [0,0],
      zoom: 4
    });

    var marker = new ol.Overlay({
      element: document.getElementById('position'),
      positioning: ol.OverlayPositioning.CENTER_CENTER
    });


      if(this.model.get("map") == "default"){  

      console.log("carga default");  

      this.map = new ol.Map({
        layers: [
          new ol.layer.Tile({
            preload: 4,
            source: new ol.source.OSM()
          })
        ],
        renderers: ol.RendererHints.createFromQueryData(),
        target: 'container',
        view: view
      });

          var geolocation = new ol.Geolocation();
          geolocation.bindTo('projection', this.map.getView());
          geolocation.setTracking(true);

          this.map.addOverlay(marker);
          marker.bindTo('position', geolocation);
      view.setCenter(ol.proj.transform([Number(longitude),Number(latitude)], 'EPSG:4326', 'EPSG:3857'));
      view.setZoom(16);

      geolocation.on('change', function() {
        if(geolocation.getPosition() != null){
          console.log("cambia");
          console.log(geolocation.getPosition()[0]);
        }
      });

从理论上讲,它可以工作,但我有下一个问题: - 在 firefox 中不起作用,但在 chroimun 浏览器中工作正常...... - 如果我从 OSM “更改”为传输地图,我会删除属性中的所有数据和我再次加载它,甚至是地理定位,但它丢弃了我用作点标记的图像...... -如果我从运输地图返回到 OSM,我无法恢复点图像......

我不知道这个问题是否与ol3的异步调用和backbone.js的渲染功能有关,我不知道这里是否有人可以帮助我理解我做错了什么......

另外,如您所见,在 setCenter i 用户 2 vars(经度和纬度)中,我想第一次从地理定位跟踪中获取,我该怎么做?

这是一个很难的问题,但我真的需要一些ol社区的帮助,请我现在迷路了。

问候并提前感谢您!

4

0 回答 0