ThinkGeo.com    |     Documentation    |     Premium Support

PanToWorldCoordinate going to incorrect location

Hi guys i am using google's api for geocode requests.


 


I get it in this format: 



LAT: 28.055949 

LONG:  -25.7153269



I use a javascript function:



    <script language="javascript" type="text/javascript">

        function PanToWorldCoordinate(x, y) {

               var newX =  x;

               var newY = y;

                Map1.PanToWorldCoordinate(newX, newY);



        }

    </script>



Which moves the Map to a totally incorrect location.


The correct location on my ThinkGeo Map shows up as:

X Y      (3117076.2094464 , -3001274.014313)



How do i convert the Lat long to the x y ?


Thank you in advance.



 



Hi Gregory, 
  
 If you are using google’s map, why not set Map1.MapUnit = GeographyUnit.Meter; ? 
  
 Regards, 
  
 Don

Hi Gregory,  
  
 I think this topic will be helpful for you. 
  
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/8440/afv/topic/Default.aspx 
  
 Please see the Khalil’s post. 
  
 Regards, 
  
 Don

 Posted By Don on 08-09-2011 01:10 PM 

Hi Gregory, 



If you are using google’s map, why not set Map1.MapUnit = GeographyUnit.Meter; ? 



Regards, 



Don 

 


I have   Map1.MapUnit = GeographyUnit.Meter already


i will try the function khalil posted.



I tried it but have no luck.  
  
 HEre is my function 
  
      <script language=“javascript” type=“text/javascript”>
        function PanToWorldCoordinate(x, y) {


            var point = new OpenLayers.Geometry.Point(x, y);
            var srcProj = new OpenLayers.Projection(‘EPSG:900913’);
            var desProj = new OpenLayers.Projection(‘EPSG:4326’);
            var newPoint = OpenLayers.Projection.transform(point, srcProj, desProj);
            
            var newX = newpoint.x;
            var newY = newpoint.y;
                Map1.PanToWorldCoordinate(newX, newY);
        }
    </script> 


I had similar problem some time ago. I verified at the time that the OpenLayers Map object was not having it's Projection setted to EPSG900913, I had to make it by hand, for that I inherited Map Control and added another property Projection. 





public class MapControl : ThinkGeo.MapSuite.WebEdition.Map     {


[JsonMember(MemberName = "projection")] 


public string Projection { get; set; }   




And then made some prototyping to MapParser 



 mapParser.prototype.onMapCreating = function (map) { 


this.map.projection = this.json.projection; 


//..  


}   




I guess something is missing on Thinkgeo (or was missing at the time.)


 


so in you case I would suggest to set the Projection prior to doing your stuff. Something like Map1.GetOpenLayersMap().projection="EPSG:900913"



I also notice that you should confirm the srcProj and destProj variables. 
  
 srcProj = "EPSG:4326" 
 destProj="EPSG:900913" 
  
 ?

I get the Values from the GEO Code from this link: 



maps.google.com/maps/geo?q=botswana&output=xml&key=ABQIAAAA1KPQi4YfHGdBrxrD7xfk3BShg55qzDjUncDQtZWMkgWc-6jGwhTE2_EhbB-MTW6vtSxa--SpoABjPA 



I get a KML / XML Response: 

screencast.com/t/sFDsSkC8R



I then put the Coordinates in...  



I dont know what to do with the "0" in [<coordinates>24.6848660,-22.3284740,0</coordinates>] 

I actually dont know the projection 



I researched it and only found a DATUM(WGS84) im not sure if thats the same as a projection: 



Location Object 

Name  Description                                    

latitude  Current latitude in degrees (WGS84 datum).  

longitude  Current longitude in degrees (WGS84 datum).



[24.6848660,-22.3284740,0]  0 -> Z 
  
 This are in EPSG:4326 
  
 So if you have your map with google as base layer in your code I think their are in an opposite order. 
  
 
[b]
 var desProj  = new OpenLayers.Projection(‘EPSG:900913’);
            var srcProj  = new OpenLayers.Projection(‘EPSG:4326’);
 [/b]
            var newPoint = OpenLayers.Projection.transform(point, srcProj, desProj);
            


But how do i get the X y Values once converted ?



 


var newX = newpoint.x;

var newY = newpoint.y;

Map1.PanToWorldCoordinate(newX, newY);

?



 



IT WORKS thank you so much guys!!! 
  
 var newX = newpoint.x; 
 var newY = newpoint.y; 
 Needed CAPS on "newPoint" 
  
 [SOLVED] 


Rui, 
  
 Thanks for your reply! 
  
 Regards, 
  
 Don