5

正如我从readme文件中看到的那样,openlayers.js包含文件和主题有多种选择。

我想要的是使用这些lightest solution of openlayers.js文件。

我将它包含openlayers.light.js在我的应用程序中,它会创建地图但不显示它们,请检查:

在此处输入图像描述

我忘了包含其他文件吗?

我的结构结构是这样的:

/vendor
   /js
     openlayers.light.js
     /img
     /theme

如何显示地图图层?

也可以openlayers.light.js在移动设备上使用(一旦解决了这个问题:P)?还是我也需要包括在内openlayers.mobile.js

这是不与 openlayers.light.js 一起使用但与 openlayers.js (740kb) 一起使用的代码:

var _element = "#map";
 var map = new OpenLayers.Map (_element, {
    controls: [
    new OpenLayers.Control.Navigation({
      dragPanOptions: {
        enableKinetic: true
      }
    }),
    new OpenLayers.Control.Zoom()
    ],
    projection: new OpenLayers.Projection("EPSG:900913"),
    displayProjection: new OpenLayers.Projection("EPSG:4326")
  });

  var lonLat = new OpenLayers.LonLat(_lon, _lat).transform (
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
// map.getProjectionObject() doesn't work for unknown reason
);
  var markers = new OpenLayers.Layer.Markers( "Markers" );
  map.addLayer(markers);

  var size = new OpenLayers.Size(21,25);
  var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
  var icon = new OpenLayers.Icon(_img_map_marker, size, offset);
  markers.addMarker(new OpenLayers.Marker(lonLat, icon.clone()));

  var mapnik = new OpenLayers.Layer.OSM("Test");
  map.addLayer(mapnik);

  map.setCenter (lonLat,3);

PS:我的 openlayers map js init 方法没问题,它可以使用 huge openlayers.js (740KB),但不能与 openlayers.light.js 一起使用,如我上面所示

html

<div id="map"></div>

css

img{max-width:none;}
#map{
width:300px;
height:300px;
}
4

1 回答 1

3

如果您想使用带有 openlayers 的移动属性作为手动平移或缩放,您必须使用 openlayers.mobile.js。

您可以将 openlayers.light.js 用于移动设备,但不能用于移动功能。

我认为你的结构应该是:

myProject
   /js
      openlayers.light.js
   /img
   /theme

我已经在http://jsfiddle.net/aragon/ZecJj/中尝试过 openlayers.light.js并且没有问题。

我的代码:

var map = new OpenLayers.Map({
    div: "map",
    minResolution: "auto",
    maxResolution: "auto",
});

var osm = new OpenLayers.Layer.OSM();
var toMercator = OpenLayers.Projection.transforms['EPSG:4326']['EPSG:3857'];
var center = toMercator({x:-0.05,y:51.5});
map.addLayers([osm]);


map.setCenter(new OpenLayers.LonLat(center.x,center.y), 13);

并尝试阅读Deploying (Shipping OpenLayers in your Application)

OpenLayers 带有开箱即用的预配置示例:只需下载 OpenLayers 的一个版本,您就可以获得一整套易于使用的示例。但是,这些示例旨在用于开发。当您准备好部署应用程序时,您需要一个高度优化的 OpenLayers 分发,以限制带宽和加载时间。

您可以使用此链接更改 src 文件,并且可以看到它仍然有效。

 <script type="text/javascript" src="http://openlayers.org/dev/OpenLayers.light.debug.js"></script>

<script type="text/javascript" src="https://view.softwareborsen.dk/Softwareborsen/Vis%20Stedet/trunk/lib/OpenLayers/2.12/OpenLayers.light.js?content-type=text%2Fplain"></script>

我希望它可以帮助你...

于 2013-02-11T12:38:37.230 回答