【问题标题】:OpenStreetMap point not showing on map with open layersOpenStreetMap 点未显示在具有开放图层的地图上
【发布时间】:2012-04-27 04:07:55
【问题描述】:
var map;
var vectors;
var point;
var drag;

可以使用任何 long 和 Lat

function mapCreate(lon,lat){
            map = new OpenLayers.Map("map1");
            var osm = new OpenLayers.Layer.OSM();
            //create a vector
            vectors = new OpenLayers.Layer.Vector("Vector Layer");
            map.addLayer(osm);
            var center = new OpenLayers.LonLat(lon,lat).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()
            );

为该点分配一个经纬度

point = new OpenLayers.Geometry.Point(lat,lon);

向向量添加点

        vectors.addFeatures([new OpenLayers.Feature.Vector(point)]);

        map.setCenter(center, 15);
        //add vectors to map
        map.addLayer(vectors);

    }

我错过了什么吗?

【问题讨论】:

  • point = new OpenLayers.Geometry.Point(center.lon,center.lat); Point 的构造函数需要 OpenLayers.LonLat lon 和 lat。

标签: javascript openlayers openstreetmap


【解决方案1】:

你在看完整的地图吗?您很有可能将点的位置设置为纬度/经度。 OpenLayers LonLat 对象如此命名只是为了欺骗像您这样的无辜用户,使其认为它会自动转换纬度经度,或者期望它们,或其他什么。不要相信它,重新投影到地图的投影中。

【讨论】:

    【解决方案2】:

    我认为 Collection 是必要的,但看起来你已经交换了纬度和经度。一个点必须有 lon,然后是 lat。

    feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Collection([new OpenLayers.Geometry.Point(0, 0)]), {});
    vectors.addFeatures([feature]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2019-03-26
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多