<div dir="ltr">Your map configuration is very incomplete. OpenLayers does not pick up things like units from proj4js for the map configuration, so you also have to set units on the map. You also need to set maxExtent and maxResolution on the map, otherwise you will get defaults from WGS84. Finally, if your projection's units are meters, you also need to set your layer maxExtent in meter coordinates.<div>
<br></div><div style>Andreas.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 11, 2013 at 10:48 AM, <a href="mailto:a.lucas@geolnet.net">a.lucas@geolnet.net</a> <span dir="ltr"><<a href="mailto:a.lucas@geolnet.net" target="_blank">a.lucas@geolnet.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hello,</div><div><br></div><div>here is the full code I wrote. </div><div>I have some images for the background and a vector layer I can display over the base map. </div>
<div>
<br></div><div><br></div><div>Thanks for any help.</div><br><div><table><tbody><tr><td> <span><script <span>type</span>="<span>text/javascript</span>"></span></td>
</tr><tr><td></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>        Proj4js.defs["PLANETB"] = "+proj=eqc +a=4500000 +b=4500000 +units=m +no_defs";</td>
</tr><tr><td></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>        var map, vectors, formats;</td></tr><tr><td></td><td><br>
</td></tr><tr><td></td><td>        var graticuleCtl1, graticuleCtl2;</td></tr><tr><td></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>
<br></td></tr><tr><td></td><td>        function init(){</td></tr><tr><td></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>               map = new OpenLayers.Map('map', {</td>
</tr><tr><td></td><td>                    controls: [</td></tr><tr><td></td><td>                        new OpenLayers.Control.Navigation(),</td></tr><tr><td></td><td>
                        new OpenLayers.Control.PanZoomBar(),</td></tr><tr><td></td><td>new OpenLayers.Control.ScaleLine({bottomOutUnits: '',geodesic: true}),</td></tr><tr><td></td><td>
                        new OpenLayers.Control.MousePosition(),</td></tr><tr><td></td><td>                        new OpenLayers.Control.Graticule()</td></tr><tr><td></td><td><br></td></tr>
<tr><td></td><td>                    ],</td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>projection:  new OpenLayers.Projection("PLANETB")</td></tr><tr>
<td></td><td><br></td></tr><tr><td></td><td>                });</td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>               var ls = new OpenLayers.Control.LayerSwitcher()</td>
</tr><tr><td></td><td>                 map.addControl(ls);</td></tr><tr><td></td><td>                 ls.maximizeControl();</td></tr><tr><td></td><td>            </td>
</tr><tr><td></td><td><br></td></tr><tr><td></td><td>             var iss = new OpenLayers.Layer.Image(</td></tr><tr><td></td><td>                'ISS (Base 3)',</td>
</tr><tr><td></td><td>                'Data/ISS.gif',</td></tr><tr><td></td><td>                new OpenLayers.Bounds(-180, -90, 180, 90),</td></tr><tr><td></td><td>
                new OpenLayers.Size(800, 400),</td></tr><tr><td></td><td>                {numZoomLevels: 4}</td></tr><tr><td></td><td>            );</td></tr><tr><td></td><td>
<br></td></tr><tr><td></td><td>    var topo = new OpenLayers.Layer.Image(</td></tr><tr><td></td><td>                                  'Topography (Splined)',</td></tr><tr><td></td>
<td>                                                  'Data/spline.png',</td></tr><tr><td></td><td>                                                               new OpenLayers.Bounds(-180, -90, 180, 90),</td></tr><tr><td></td><td>
                                                                                    new OpenLayers.Size(800, 400),</td></tr><tr><td></td><td>                                                                                                   {numZoomLevels:1}</td></tr><tr><td></td><td>                                                                                                            );</td>
</tr><tr><td></td><td><br></td></tr><tr><td><br></td><td><br></td></tr><tr><td></td><td>           var blank = new OpenLayers.Layer.Image(</td></tr><tr><td></td>
<td>                'Blank (No Base Map)',</td></tr><tr><td></td><td>                '',</td></tr><tr><td></td><td>                new OpenLayers.Bounds(-180, -90, 180, 90),</td>
</tr><tr><td></td><td>                new OpenLayers.Size(800, 400),</td></tr><tr><td></td><td>                {numZoomLevels: 4}</td></tr><tr><td></td><td>            );</td>
</tr><tr><td></td><td><br></td></tr><tr><td><br></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td>
</td><td>           var  blue_unit =  new OpenLayers.Layer.Vector("Blue Unit", {</td></tr><tr><td></td><td>                protocol: new OpenLayers.Protocol.HTTP({</td></tr><tr><td>
</td><td>                    url: "Data/blue_unit.gml",</td></tr><tr><td></td><td>                    format: new OpenLayers.Format.GML()</td></tr><tr><td></td><td>                }),</td>
</tr><tr><td></td><td>                strategies: [new OpenLayers.Strategy.Fixed()],</td></tr><tr><td></td><td>                visibility: true,</td></tr><tr><td></td><td>
                //wrapDateLine: true,</td></tr><tr><td></td><td>                style: {fillColor: "#0066cc",fillOpacity:0.4 , strokeWidth: 1, strokeColor: "#0066cc", strokeOpacity: 1 },</td>
</tr><tr><td></td><td>                projection: map.displayProjection,</td></tr><tr><td></td><td>            });</td></tr><tr><td></td><td><br></td></tr><tr><td>
<br></td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>            map.addLayers([blank, topo,iss,vims,sar,rad,dark_unit,blue_unit,dunes]);</td></tr><tr><td>
</td><td><br></td></tr><tr><td></td><td><br></td></tr><tr><td></td><td>            map.zoomToMaxExtent();</td></tr><tr><td></td><td><br></td></tr><tr><td>
</td><td>            var options = {</td></tr><tr><td></td><td>                hover: true,</td></tr><tr><td></td><td>                onSelect: serialize</td></tr><tr><td>
</td><td>            };</td></tr><tr><td></td><td>         </td></tr><tr><td></td><td>            </td></tr><tr><td></td><td>            updateFormats();</td>
</tr><tr><td></td><td><br></td></tr><tr><td></td><td>            map.setCenter(new OpenLayers.LonLat(0, 0), 1);</td></tr><tr><td></td><td>        }</td></tr></tbody></table>
</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><span style="font-size:medium;white-space:pre-wrap;font-family:monospace">   </span><span style="font-family:monospace;font-size:medium;white-space:pre-wrap"></script></span><br>

</div><div><br></div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 8, 2013 at 3:40 PM, Andreas Hocevar <span dir="ltr"><<a href="mailto:ahocevar@opengeo.org" target="_blank">ahocevar@opengeo.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey,<div><br></div><div>are you sure that your map actually uses the 'PLANETB' projection? Show a bit more code, especially which layers you add, or preferably point us to a fully configured example. Note that the base layer's projection - if specified - overrides the map projection.</div>


<div><br></div><div>Andreas.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div>On Mon, Jul 8, 2013 at 2:51 PM, <a href="mailto:a.lucas@geolnet.net" target="_blank">a.lucas@geolnet.net</a> <span dir="ltr"><<a href="mailto:a.lucas@geolnet.net" target="_blank">a.lucas@geolnet.net</a>></span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><font size="3" style="font-family:arial,sans-serif">Hello Folks,</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">


<br style="font-family:arial,sans-serif;font-size:13px">
I already asked but got no reply, so I repost my question, sorry for spamming you on that.<div><br></div><div><br><br><br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">I intend to use <span style="background-color:rgb(255,255,204)">OpenLayers</span> for an educational project dealing with <span style="background-color:rgb(255,255,204)">planetary</span> data. </font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">I tried to get an accurate scale bar (i.e., ScaleLine object) from a custom projection but it seems that ScaleLine does not understand non-terrestrial sphere/ellipsoid.</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">Here is what I have done:</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">I first call proj4js:</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif"><script src="<a href="http://svn.osgeo.org/metacrs/proj4js/trunk/lib/proj4js-compressed.js" target="_blank">http://svn.osgeo.org/metacrs/proj4js/trunk/lib/proj4js-compressed.js</a>"></script></font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">then <span style="background-color:rgb(255,255,204)">OpenLayers</span></font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">and in a javascript sequence I do this: </font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">Proj4js.defs["PLANETB"] = "+proj=eqc +a=4500000 +b=4500000 +units=m +no_defs";</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">      function init(){</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">               map = new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Map('map', {</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                    controls: [</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">                        new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Control.Navigation(),</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                        new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Control.PanZoomBar(),</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                        new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Control.ScaleLine({bottomOutUnits: '',geodesic: true}),</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                        new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Control.MousePosition(),</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                        new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Control.Graticule()</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                    ],</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">                    projection:  new <span style="background-color:rgb(255,255,204)">OpenLayers</span>.Projection("PLANETB")</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">                });</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px"><br style="font-family:arial,sans-serif;font-size:13px">



<font size="3" style="font-family:arial,sans-serif">Unfortunately, when displaying the page, the scale bar is totally wrong. I played with different values of "a" and "b", ScaleLine does NOT take into account these values. The Proj4 syntax seems correct as it works smoothly under QGIS for instance. For me, <span style="background-color:rgb(255,255,204)">OpenLayers</span> just does not understand correctly proj4 projection. </font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">Any idea if <span style="background-color:rgb(255,255,204)">OpenLayer</span> can really understand proj4 syntax? and if not, how can I contribute (i.e., where, which files?) in order to get this right?</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br style="font-family:arial,sans-serif;font-size:13px">



<br style="font-family:arial,sans-serif;font-size:13px"><font size="3" style="font-family:arial,sans-serif">thank you for any feedback/ideas</font><span style="font-family:arial,sans-serif;font-size:13px"> </span><br></div>



</div>
<br></div></div>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.osgeo.org" target="_blank">Users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/openlayers-users" target="_blank">http://lists.osgeo.org/mailman/listinfo/openlayers-users</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Andreas Hocevar<br>OpenGeo - <a href="http://opengeo.org/" target="_blank">http://opengeo.org/</a><br>Expert service straight from the developers.<br>


</font></span></div>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.osgeo.org">Users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/openlayers-users" target="_blank">http://lists.osgeo.org/mailman/listinfo/openlayers-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Andreas Hocevar<br>OpenGeo - <a href="http://opengeo.org/">http://opengeo.org/</a><br>Expert service straight from the developers.<br>
</div>