On Wed, Dec 31, 2008 at 03:34:08PM +0100, Jacolin wrote:
> Hi dev list,
> 
> Here is a rst file for an introduction about OpenLayers. All informations may 
> not be correct, nor my english.
> 
> As you will see, this document could be a duplicate document with the  
> spherical mercator doc ... but less complete.

I think that we should not have duplicated information; if we need to
include enough code to make something work, then we can do that, but
beyond that, we should just link to the spherical mercator doc. (In
other words, I don't mind having *reasons* for boilerplate code listed
elsewhere.) I definitely dont think that "How to add 900913 to your Map
Server" belongs in an intro doc.

I'm going to clean this up a bit and then we can see what we think about
it. 

What you have right now is similar to what I have here:

  http://svn.crschmidt.net/personal/openlayers/doc/getting_started.txt

And I think that's a good start.  

> I would like to know if you (and the community) are interesting to get more 
> document from me, and if others people are working on such document and which 
> topic (in order to avoid other duplicate works).
> 
> Best regards,
> 
> Y.

> ============
> Introduction
> ============
> 
> .. contents::
> 
> Presentation
> -------------
> OpenLayers is a library written in JavaScript which allow you to develop 
> easily and quiclky an indepandant map server client interface. It proposes by 
> default loading data from OGC standards like WMS, WFS, from commercial Map 
> Base Layer like Google, Yahoo, Virtual Earth, from various data format KML, 
> GeoRSS, GML, etc. Among features available, you'll find zooming, panning, 
> displaing data, layer tree, tiled layers and cache client side. TileCache 
> allow you to cache server sider and will be presented later in this document.
> 
> OpenLayers is developed by an increasingly large community, and you can 
> contact them via a mailing list or IRC. OpenLayers is a project hosted by 
> OSGeo. The official site is located at http://openlayers.org.
> 
> You'll find a short documentation in English here: 
> http://openlayers.org/doc/, the API doc is available here: 
> http://dev.openlayers.org/docs/files/OpenLayers-js. html and there are a lot 
> of examples here: http://openlayers.org/dev/doc/examples.html
> 
> *Objectifs of this chapter:*
> * Know more about map and layer object ;
> * Create your first map ;
> * Add your own layer using a commercial base layer.
> 
> Installation
> ------------
> 
> There are two ways to use OpenLayers on its Web site. The first is to call 
> the library by the JavaScript <script> tag:
> 
> .. code-block:: javascript
> 
>   <script src='http://openlayers.org/api/OpenLayers.js'></script>
> 
> Of course you can download the local library from the download page: 
> http://trac.openlayers.org/wiki/HowToDownload
> 
> There are two presentations from the library. The first, known as sources of 
> OpenLayers, consists of a file openlayers.js which calls all other files 
> included in the tree of the library. The second version, a version built, but 
> not in binary format, consists of building all the files into a single 
> compressed file. The file size is small, but code is unreadable: any 
> unnecessary space is removed during compression. The call for the library is 
> made by the same way, but with reference to the page where it is called:
> 
> .. code-block:: javascript
> 
>   <script src='api/OpenLayers.js'></script>
> 
> You are now ready to use the library.
> 
> My first map
> ------------
> The OpenLayers API uses mainly two objects this is not exactly true, but 
> enougth for beginning): the //map// and //layers// objects. A Map object 
> stores information on the map, its size, projection units, its scope, and so 
> on. In a map, the data is displayed in the form of layers (//layers//). A 
> //layers// object is a data source that defines how OpenLayers must recover 
> the data and display them.
> 
> 
> Setting
> +++++++
> 
> Building an OpenLayers interface requires the addition of HTML code in your 
> page. You can put a map where you want. Here is a simple example for creating 
> a map with OpenLayers.
> 
> .. code-block:: html
> 
>   <html>
>   <head>
>     <title>OpenLayers Example</title>
>       <script
>       src="http://openlayers.org/api/OpenLayers.js";></script>
>       </head>
>       <body>
>         <div style="width:100%; height:100%" id="map"></div>
>   </body>
>   </html>
> 
> To initialize a map in this interface, you must write a few lines of 
> JavaScript code in the header of the page or in a map.js file for example. 
> The file or the code should be placed after the insertion of the library 
> OpenLayers. Generally, it creates a ''init()'' function which, put in the 
> <body> tag initialize the map after loading the page.
> 
> .. code-block:: javascript
> 
>   var map;
>   function init() {
>     //creating map object
>     map = new OpenLayers.Map('map');
>     //creating a WMS layer
>     var wms = new OpenLayers.Layer.WMS(
>        "http://labs.metacarta.com/wms/vmap0";, 
>        {'layers':'basic'}
>     );
>     //adding wms layer to the map object
>     map.addLayer(wms);
>   }
> 
> 
> Here is a full example:
> 
> .. code-block:: html
> 
> <html>
> <head>
>   <title>OpenLayers Example</title>
>     <script src="http://openlayers.org/api/OpenLayers.js";></script>
>     </head>
>     <body>
>       <div style="width:100%; height:100%" id="map"></div>
>       <script defer="defer" type="text/javascript">
>         var map = new OpenLayers.Map('map');
>         var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
>             "http://labs.metacarta.com/wms/vmap0";, {layers: 'basic'} );
>         map.addLayer(wms);
>         map.zoomToMaxExtent();
>       </script>
> 
> </body>
> </html>
> 
> 
> <html>
> <script src="http://openlayers.org/api/OpenLayers.js";></script>
> <div style="width:400px; height:200px" id="map"></div>
> <script defer="defer" type="text/javascript">
>         var map = new OpenLayers.Map('map');
>         var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
>             "http://labs.metacarta.com/wms/vmap0";, {layers: 'basic'} );
>         map.addLayer(wms);
>         map.zoomToMaxExtent();
> </script>
> </html>
> 
> Add Google Maps Layers
> ++++++++++++++++++++++
> 
> Google uses a distorted projection which implies that others layers are not 
> always overlaid correctly. Google uses a Spherical Mercator projection 
> assuming that the earth is spherical (which is incorrect). Following this, 
> for a large zoom a shift appears between the Google map and your data. You 
> can reproject your data in another projections (see later), or define the 
> spherial projection within the parameters of the map and set up a parameter 
> in the Commercial base layer options. Here is the way to enable this in your 
> map, first define your map options by using the following:
> 
> .. code-block:: javascript
> 
>             var options = {
>                 projection: "EPSG:900913",
>                 units: "m",
>                 maxResolution: 156543.0339,
>                 maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,
>                                                  20037508.34, 20037508.34)
>             };
> 
> 
> Projection definition for proj4 is following:
> 
> .. code-block:: bash
> 
>    +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0
>    +k=1.0 +units=m +nadgri...@null +no_defs
> 
> More information are available at 
> [[http://proj.maptools.org/faq.html#sphere_as_wgs84|this page]]. For 
> GeoServer:
> 
> .. code-block:: bash
>      900913=PROJCS["WGS84 / Simple Mercator", GEOGCS["WGS 84",
>      DATUM["WGS_1984", SPHEROID["WGS_1984", 6378137.0, 298.257223563]], 
>      PRIMEM["Greenwich", 0.0], UNIT["degree", 0.017453292519943295], 
>      AXIS["Longitude", EAST], AXIS["Latitude", NORTH]],
>      PROJECTION["Mercator_1SP_Google"], 
>      PARAMETER["latitude_of_origin", 0.0], PARAMETER["central_meridian", 
> 0.0], 
>      PARAMETER["scale_factor", 1.0], PARAMETER["false_easting", 0.0], 
>      PARAMETER["false_northing", 0.0], UNIT["m", 1.0], AXIS["x", EAST],
>      AXIS["y", NORTH], AUTHORITY["EPSG","900913"]]
> 
> The GeoServer release greater or equal to 1.5.4 doesn't need to add the 
> projection definition to the configuration, already included in the 
> configuration file.
> 
> Go back to OpenLayers, to add a Google base layer you have to add a ''layer'' 
> object to your ''map'' object with the following method:
> 
> .. code-block:: javascript
> 
> new OpenLayers.Layer.Google(LayerName, options);
> 
> 
> ''options'' parameter is an array of options to be sent to the method. 
> Available options are (read the OpenLayers API for OpenLayers.Layer.Google to 
> get more information):
>   * ''type'' : type of the commercial base layer, google here (normal, 
> satellite, mixte) ;
>   * ''sphericalMercator'' : is the projection is sphericalMercator? Set value 
> to ''true''.
> 
> For the ''type'' parameter, choose one between:
>     * G_NORMAL_MAP
>     * G_SATELLITE_MAP
>     * G_HYBRID_MAP
> 
> You have three constants that you can modify:
>   * ''MIN_ZOOM_LEVEL'' : default value: 0 ;
>   * ''MAX_ZOOM_LEVEL'' : default value: 19 ;
>   * ''RESOLUTIONS''
> 
> For example:
> 
> .. code-block:: javascript
> 
>   var google = new OpenLayers.Layer.Google(
>                  "Google Streets",
>                  {type: G_NORMAL_MAP, 'sphericalMercator': true}
>   );
> 
> 
> .. important::
> 
> If you enable several type of Google layer (hybrid, default, satellite, for 
> example), add your layers with the ''addlayers()'' method or you can have a 
> shift between each Google baselayer. Example: ''map.addLayers ([google, 
> hybrid, satellite]);''
> 
> 
> If you wish to overlay a GML layer (or other) with a commecial baselayer 
> (like Google), you *must* use the option '' 'sphericalMercator': true'', 
> moreover you have to reproject your data in the correct projection, like this:
> 
> .. code-block:: bash
> 
>   ogr2ogr -f "ESRI Shapefile" -t_srs "+proj=merc +a=6378137 +b=6378137 
> +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgri...@null 
>   +no_defs" -s_srs "EPSG:4326" Mono2006_2.shp Mono2006_region.shp
> 
> If you are using OGR release greater or equal to 1.5.0, use the 'EPSG:900913' 
> code directly to reproject your data.
> 
> Finally, for PostGIS this can be useful:
> 
> .. code-block:: sql
> 
> INSERT INTO spatial_ref_sys (srid,auth_name,auth_srid,srtext,proj4text) VALUES
> (900913,'EPSG',900913,'PROJCS["Google Mercator", GEOGCS["WGS 84",DATUM["World 
> Geodetic System 1984", SPHEROID["WGS 84", 6378137.0, 298.257223563, 
> AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich", 0.0, 
> AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], 
> AXIS["Geodetic latitude", NORTH], AXIS["Geodetic longitude", EAST], 
> AUTHORITY["EPSG","4326"]], PROJECTION["Mercator (1SP)", 
> AUTHORITY["EPSG","9804"]], PARAMETER["semi_major", 6378137.0], 
> PARAMETER["semi_minor", 6378137.0], PARAMETER["latitude_of_origin", 0.0], 
> PARAMETER["central_meridian", 0.0], PARAMETER["scale_factor", 1.0], 
> PARAMETER["false_easting", 0.0], PARAMETER["false_northing", 0.0], UNIT["m", 
> 1.0], AXIS["Easting", EAST], AXIS["Northing", NORTH], 
> AUTHORITY["EPSG","900913"]]','+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 
> +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgri...@null +no_defs');
> 
> 
> *Get more information:*
> * spherical_mercator.rst
> * http://www.nabble.com/sphericalMercator-tf4625750.html#a13209474
> * 
> http://dev.openlayers.org/docs/files/OpenLayers/Layer/SphericalMercator-js.html
> * http://trac.osgeo.org/gdal/ticket/1868: adding EPSG:900913 code to your 
> EPSG file.
> 
> ----
>  --- //[[yjaco...@free.fr|Yves Jacolin]] 2008/07/17 21:45//
> _______________________________________________
> Dev mailing list
> Dev@openlayers.org
> http://openlayers.org/mailman/listinfo/dev


-- 
Christopher Schmidt
MetaCarta
_______________________________________________
Dev mailing list
Dev@openlayers.org
http://openlayers.org/mailman/listinfo/dev

Reply via email to