[OpenLayers-Users] Two displayProjections on a map
Jan Hartmann
j.l.h.hartmann at uva.nl
Thu Jan 10 09:13:21 PST 2013
Found the answer myself: the MousePosition control has a property
"formatOutput", with which you can define a function having one
parameter (lonlat, the value of the MousePosition), and returning a
string with which to replace this value. No exta layouting needed.
Jan
On 01/10/2013 03:48 PM, Jan Hartmann wrote:
> 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>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20130110/c5cc9324/attachment.html>
More information about the Users
mailing list