我正在使用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社区的帮助,请我现在迷路了。
问候并提前感谢您!