ThinkGeo.com    |     Documentation    |     Premium Support

SetCenter, Google

Hi,


I have a small question. I use javascript method SetCenter(longitude, latitude) in two types of map. With google geocoding I get the coordinates of place and use the SetCenter. In my map (our data) is all right. But in google background the center is placed to the Africe in every case.


In google background I use map unit meter, maybe it's my problem. But in google map the functionality of their method setCenter with coordinates is ok.


Thanks


Ondrej Kaspar



Hi Ordrej,



Google’s map is rendered by meter unit while we use decimal degree as default; when you get the position by Google Geocoder, it returns coordinate in decimal degree which you used to set the center of the map in meter unit. That’s why the location displayed incorrectly.



So you need to convert the unit decimal degree to meter and then call SetCenter function. Please see the following code.var OnMapCreated = function(map) {
    var lonlat = new OpenLayers.Geometry.Point(20, 20);
    var sourceProj = new OpenLayers.Projection('EPSG:4326');
    var destProj = new OpenLayers.Projection('EPSG:900913');
    var newLonlat = OpenLayers.Projection.transform(lonlat, sourceProj, destProj);
    Map1.SetCenter(newLonlat.x, newLonlat.y);
}

If you have any questions please let me know.



Thanks,



Howard



Thanks Howard.

Ondrej, 
  
 You are welcome, if you have more questions please let me know, 
  
 Thanks, 
  
 Howard