Backbone + ol3:更改地图和firefox不起作用

时间:2013-12-17 23:24:03

标签: javascript backbone.js openlayers-3

我正在使用backbone.js,我有一些难以理解地理位置的使用。

我会尝试解释这个问题,因为应用程序很大,而且它有很多课程,而且很难理解:

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

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

  • A(查看)
  • >乙
  • > C(查看)
  • >> d
  • >> E(查看,其中包含将存储ol.map对象的atribbute。)

好的,当我需要启动此引擎并从app请求它时选择地理位置时,问题就开始了。接下来是E类的序列:

构造函数:定义map,它可以是默认(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 user 2 vars(经度和纬度)中,我想从第一次地理位置跟踪得到,我该怎么办呢?

这是一个很难回答的问题,但我真的需要一些ol社区的帮助,请我此刻失去。

问候并提前感谢你!

0 个答案:

没有答案