[OpenLayers-Users] Aspect Ratio/Projection Problem
Paul Spencer
pagameba at gmail.com
Fri Jun 6 11:22:16 EDT 2008
functional code attached. The problem is that you are mixing
coordinate systems and while Google automatically assumes you are
using lon/lat and transforms them internally, OpenLayers doesn't.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20080606/062b0c47/test.html
-------------- next part --------------
Cheers
Paul
On 6-Jun-08, at 10:57 AM, Michael Langford wrote:
> The options at that time was just {} now it as this.
>
> Now it is as the following, still behaves the same....
>
> var options = {
> projection: new OpenLayers.Projection("EPSG:900913"),
> displayProjection: new OpenLayers.Projection("EPSG:
> 4326"),
> units: "m",
> maxResolution: 156543.0339,
> maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
> 20037508, 20037508.34)
> };
>
> g_map = new OpenLayers.Map('map', options);
>
> var mapbounds = new OpenLayers.Bounds(-74.766667,
> 39.166666667,
> -71.88333,
> 40.88333)
> var graphic = new OpenLayers.Layer.Image(
> 'Oceantemp.com Temperatures',
> 'http://www.rowdylabs.com/gmaps/oceantemp/area-ne06.gif',
> mapbounds,
> new OpenLayers.Size(1030,796),
> {maxExtext:mapbounds});
>
> g_map.addLayers([graphic]);
> g_map.setCenter(new OpenLayers.LonLat(-73,40), -1);
>
> g_markers = new OpenLayers.Layer.Markers( "Markers" );
> g_map.addLayer(g_markers)
>
> On Fri, Jun 6, 2008 at 8:09 AM, Paul Spencer <pagameba at gmail.com>
> wrote:
>> Michael,
>>
>> I tried your code, you have omitted a critical piece which is the
>> options
>> object you are passing to the map constructor - please send so I
>> can see
>> what is going on.
>>
>> Cheers
>>
>> Paul
>>
>> On 6-Jun-08, at 3:33 AM, Michael Langford wrote:
>>
>>> I tried Paul's suggestion and it didn't change anything.
>>>
>>> I'll try to clarify and add code.
>>>
>>> If you take OpenLayers out of the picture entirely, and you use
>>> GMaps
>>> instead to do what we're trying to do, you'd use a GGroundOverlay on
>>> google maps to plop say a custom map of New York City down on top
>>> (completely obscuring their map). When you do this, the google does
>>> not in any way stretch, modify, reproject, etc, the images we are
>>> using. It might with other images, but ours come out the same as
>>> they
>>> go in, probably indicating we have the same projection as Google
>>> Maps,
>>> or at least close enough these areas overlay correctly. Here is an
>>> example of using GGroundOverlay:
>>> http://www.usnaviguide.com/ws-2008-02/ggroundoverlay_example.htm
>>> Notice his picture *IS* reprojected to fit on the google map (ours
>>> is
>>> not).
>>>
>>> If we port our GGroundOverlay example from GMaps to open layers, we
>>> throw down our custom map of say New York, then OpenLayers decides
>>> (at
>>> least in the default setup), that it would like to stretch our
>>> custom
>>> map overlay. Sure, it reports the correct lats and longs after doing
>>> so, but it looks horrible, as there is lots of lettering and symbols
>>> on the map which are stretched to near illegibility. We want to
>>> mimic
>>> the projection that the screen map is in on Google Maps so as to
>>> avoid
>>> any distortion.
>>>
>>> When we use an OpenLayer.Layer.Image on top of the default map that
>>> you get when you go new OpenLayers.Map("map"), the picture is
>>> distorted as OpenLayers reprojects the image or something like that,
>>> elongating it in the east west direction.
>>>
>>> How can I use an image layer in OpenLayers to achieve the same
>>> appearance as a GGroundOverlay in google maps, with no squishing and
>>> stretching of the image overlay?
>>>
>>> As a further modification, we're actually just using the image as
>>> the
>>> base map. We're not using a google map, WMS server or anything like
>>> that, nor are we tiling our image. We're justing using the single
>>> image that we were overlaying now as the "base layer" of the map.
>>> We're just interested in the controls, markers, and nice map
>>> pixel->coordinate translations, as well as your wonderful vector
>>> drawing api.
>>>
>>> Remember when I say terms like "base layer" etc, I probably don't
>>> have
>>> the same OpenLayers concepts you do, and I just mean its the map on
>>> the bottom, we're not putting any pictures under it. Sorry if I used
>>> terms different than they are in the Open Layers community.
>>>
>>> --Michael
>>>
>>> Here is the code that initializes the map:
>>> var mapbounds = new OpenLayers.Bounds(-74.766667,
>>> 39.166666667,
>>> -71.88333,
>>> 40.88333);
>>>
>>> g_map = new OpenLayers.Map('map', options);
>>>
>>> var graphic = new OpenLayers.Layer.Image(
>>> 'Overlay of Temperature Data',
>>>
>>> 'http://www.rowdylabs.com/gmaps/oceantemp/area-ne06.gif',
>>> mapbounds,
>>> new OpenLayers.Size(1030,796),
>>> {maxExtext:mapbounds});
>>>
>>> g_map.addLayers([graphic]);
>>> g_map.setCenter(new OpenLayers.LonLat(-73,40), -1);
>>>
>>> g_markers = new OpenLayers.Layer.Markers( "Markers" );
>>> g_map.addLayer(g_markers);
>>>
>>>
>>> On Fri, Jun 6, 2008 at 2:22 AM, Eric Lemoine <eric.c2c at gmail.com>
>>> wrote:
>>>>
>>>> On Fri, Jun 6, 2008 at 12:43 AM, Michael Langford
>>>> <michael.langford at rowdylabs.com> wrote:
>>>>>
>>>>> After switching to openlayers.org from google maps, we're almost
>>>>> ready
>>>>> to launch my customer's new site.
>>>>>
>>>>> One problem though: His overlay image is "squished" on OpenLayers,
>>>>> where it looks great using the image overlay of Google Maps API.
>>>>> It
>>>>> involves way too many hours of hand lettered text on it to
>>>>> contemplate
>>>>> redoing in the new aspect ratio, so I need to find a technical
>>>>> solution to make OpenLayers.org display it properly.
>>>>>
>>>>> I've been fiddling with projections, and have not seen a way out
>>>>> of
>>>>> this forest, as nothing appears to change the display of the
>>>>> image.
>>>>>
>>>>> When I look, I keep finding pointers on the web to the extremely
>>>>> brief
>>>>> comment about projections on the FAQ, which doesn't help me at
>>>>> all.
>>>>>
>>>>> It seems like I'd like to display in EPSG:900313 as that is what
>>>>> Google uses (that may not be the exact name, I deleted it after it
>>>>> seemed clear it wasn't working).
>>>>>
>>>>> I'm not exactly sure the role the proj4js plays in this, but it
>>>>> seems
>>>>> like it probably does.
>>>>>
>>>>> I've attached the picture of what the overlay looks like when
>>>>> applied
>>>>> to google's map, and what the overlay looks like when applied to
>>>>> open
>>>>> layers. In addition, it is available at
>>>>> http://rowdylabs.com/ng/RightAndWrong.GIF in case the mailing list
>>>>> doesn't like attachments.
>>>>>
>>>>> Hopefully someone can provide something like the following:
>>>>>
>>>>> You properly include proj4js at the top of your html file like so,
>>>>> and you create your map with arguments like so.
>>>>
>>>> Hello
>>>>
>>>> I'm not sure I understand your problem. But if what you want is
>>>> have
>>>> overlays over google maps you'll need to use SphericalMercator. See
>>>> some doc here <http://trac.openlayers.org/wiki/SphericalMercator>
>>>> and
>>>> some example there
>>>> <http://www.openlayers.org/dev/examples/spherical-mercator.html>.
>>>> Hope
>>>> this will help you do what you want.
>>>>
>>>> Cheers,
>>>>
>>>> --
>>>> Eric
>>>>
>>>
>>>
>>>
>>> --
>>> Michael Langford
>>> Phone: 404-386-0495
>>> Web: http://www.RowdyLabs.com
>>> _______________________________________________
>>> Users mailing list
>>> Users at openlayers.org
>>> http://openlayers.org/mailman/listinfo/users
>>
>>
>
>
>
> --
> Michael Langford
> Phone: 404-386-0495
> Web: http://www.RowdyLabs.com
More information about the Users
mailing list