[OpenLayers-Users] Two displayProjections on a map
Jan Hartmann
j.l.h.hartmann at uva.nl
Thu Jan 10 06:48:17 PST 2013
Yes, this is the difficult solution. It works, but I was thinking in
another direction. As Bart pointed out, it is possible to put multiple
Mouseposition controls with different DisplayProjections on a page by
means css classes. This means that I can influence the position of these
controls and their projected coordinate values without any other
formating. However, I would also like to be able to change to format of
a lon-lat value to degrees-minutes-seconds. Is there a way to get at the
numeric value of a MousePosition control and alter it?
There are other possibilities for this. Older maps often have national
central meridians, like Paris, Amsterdam, Djakarta. To see the
lon-values on those map in Greenwich values, all lon values need to be
added with a constant. It would be nice if that could be done
automatically via the MousePointer control.
Jan
On 1/10/2013 2:46 PM, Richard Greenwood wrote:
> On Thu, Jan 10, 2013 at 6:02 AM, Jan Hartmann <j.l.h.hartmann at uva.nl
> <mailto:j.l.h.hartmann at uva.nl>> wrote:
>
> Hi Rich, how did you get the lon-lat values on your map formattted
> as degrees/minutes/seconds (next to the default decimal degrees?)
>
>
> Hey Jan -
>
> The hardest part was getting the coordinates to be the same width so
> that they did not cause other page elements to move. Without that the
> display was quite "jittery". My code is below. I'm using my original
> CSCS transformation library, not proj4js, but that shouldn't matter.
>
> Best regards,
> Rich
>
> rwg.cursorCoords = function(e) {
>
> var position = this.events.getMousePosition(e);
> var pointXY = this.getLonLatFromPixel(position); /* this has a
> transform method */
> var p = new CSCS.PT <http://CSCS.PT>(pointXY.lon, pointXY.lat);
> var text;
>
> /* *** Private functions ***************** */
> var zeroPad2 = function(num) {
> num += '';
> return (num.length<2) ? "0"+num : num;
> };
>
> var zeroPad4 = function(num) {
> num += '';
> return (num.length<4) ? "0"+num : num;
> };
>
> var dd2dms = function(v) {
> var fv = v % 1; // fractional part
> var d = v - fv; // integer part (degrees)
> fv = Math.abs(fv);
> var m = fv * 60; // minutes
> var mf = m % 1; // fractional part of minutes
> var mi = m - mf; // integer part of minutes
> var s = Math.round(mf*600)/10; // seconds
> s = s.toFixed(1);
> return d + "° " + zeroPad2(mi) + "' "+ zeroPad4(s)
> + """;
> };
>
> // display original state plane coords
> text = "N: " + Math.round(p.y) + " E: " + Math.round(p.x);
> OpenLayers.Util.getElement("coords").innerHTML = text;
>
> // convert to long/lat and display
> CSCS.transform(csSP, csLL, p);
>
> text = "<table cellpadding=\"0\" cellspacing=\"0\"><tr><td>";
> text += "Long: " + dd2dms(p.x) + "</td><td> Lat: " +
> dd2dms(p.y);
> text += "</td></tr><tr><td>Long: " +
> Math.round(p.x*10000)/10000 + "°</td><td> Lat: " +
> Math.round(p.y*10000)/10000;
> text += "°</td></tr></table>";
>
> OpenLayers.Util.getElement("coordsLL").innerHTML = text;
>
> // convert long/lat to UTM and display
> CSCS.transform(csLL, csUTM, p);
> text = "X =" + Math.round(p.x) + " Y = " + Math.round(p.y);
> OpenLayers.Util.getElement("coordsUTM").innerHTML = text;
>
> };
>
>
>
>
>
> --
> Richard Greenwood
> richard.greenwood at gmail.com <mailto:richard.greenwood at gmail.com>
> www.greenwoodmap.com <http://www.greenwoodmap.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20130110/6edfd97b/attachment-0001.html>
More information about the Users
mailing list