ThinkGeo.com    |     Documentation    |     Premium Support

Integrate Google Map with ThinkGeo

Hello,


I am using ThinkGeo map in my application and this works fine for displaying shapes, markers, etc. But later in this application, one more requirement came that Google Map. In this requirements, user click on toggle but which switch the user from ThinkGeo map to Google Map. For that I am using Google Map which you are provided with Map Suit. For Google Map, I am using same code for displaying shapes, markers, etc, but I could not see any shapes file on the google map, even markers display on a map but they are not displaying at proper position that are displayed in ThinkGeo map. All markers are displayed at 0,0 long / lat. Also one more thing, what extent I am setting for ThinkGeo map is not working for Google Map. 


Please guide me, what should I do for that where I am using both Google and ThinkGeo map base on user selection and how do I display markers, shapes for both of them.


Thanks,


Badal



 


Badal,
ThinkGeo Map has two kinds of Projections, one uses 900913 projection and Meter GeographyUnit, another one uses 4326 projection and Decimal Degree GeographyUnit. But the Google Map just works with 900913 projection. I’m not sure whether the projections for both maps in your application match each other. We should convert all the coordinates, such as Marker’s position, current Extent, to the ones in 900913 projection if the application works with Google Map. Can you post some code about map definition here?
Thanks,
Johnny

Hi Johnny,


Thanks for your guidance. Please find the attached zip file, which contains Map control code, works for thinkgeo map. Same thing I have to done in Google Map. Kindly verify my code, how will I convert thinkgeo coordinates to 900913 projection. If possilble give me small sample code for more understanding. And also I want to display shapes for road,railways,etc... on google map but don't want to use google's inbuit shapes for road,railway,etc.


 


Thanks,


Badal



Map.zip (14.3 KB)

 


Badal,
Just as mentioned, all the shapes, extent works with default projection 4326 in your sample. For instance, the MapUnit of the Map should be GeographyUnit.Meter. Please check the attached demo.
Thanks,
Johnny

001_MapShapes.zip (3.02 KB)

Hi Johnny,


I have seen your code, I did same way as you gave in the exmaple code. I have also added Map1.MapUnit = GeographyUnit.Meter; code. Google Map is displayed but still I could not see any shape files even I makred that you have provided Extents that is not work for ThinkGeo. Also when I want to display marker on specified latitude and logitude position, it display at 0,0 latitude and longitude position. I also mentioned in earlier post that I have to use both ThinkGeo and Google Map in a single interface, display of map is depends upon a user selection. So how can I handle this two maps in a single interface? And also want to display marker in Google Map at same position as in ThinkGeo Map.


Please give detail solution of this issue.


Thanks,


Badal



 


Badal,
If you want to overlay some shape files on the Google Map, besides providing the proper Extent, you also to set the proper projection for the ShapeFileFeatureSource, please refer to the installation sample “Samples/Overlays/ShapeFilesOverGoogleMap.aspx”.
I think the invisible markers happened because you didn’t convert all the coordinates of the markers into Google Projection. After the conversion, the markers will display normally and locate the same position as in ThinkGeo map. Please refer to the installation sample “Samples/Markers/AddProjectedMarkers.aspx” about how to attach google projection information to FeatureSourceMarkerOverlay and InMemoryMarkerOverlay. If you are using SimpleMarkerOverlay, you need to convert the coordinate of each marker to Google projection, the code like below:
                Proj4Projection prj4 = new Proj4Projection();
                prj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
                prj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
                prj4.Open();
 
                PointShape position = new PointShape(-94.558, 39.078);
                PointShape projectedPosition = prj4.ConvertToExternalProjection(position) as PointShape;
 
                Marker projectedMarker = new Marker(projectedPosition);
 
Thanks,
Johnny

Hi Johnny,


Thanks for your sample code. Marker is displayed at correct position but when I try to set the extent in Google Map through your code it's not displayed same extent as in ThinkGeo Map. Please find below code for this:


            Proj4Projection prj4 = new Proj4Projection();

            prj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);

            prj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();

            prj4.Open();

            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));

            Map1.CurrentExtent = prj4.ConvertToExternalProjection(new RectangleShape(-51, 65, 30, -70)) as RectangleShape;

            Map1.MapUnit = GeographyUnit.Meter;

            prj4.Close();


 


Otherwise its working fine in IE but not for Fire Fox, when I put thinkgeo map in update panel and any map related event is fired, map is not displayed correctly. For your more understanding, I have attached sample code. Please check it. If I am not putting thinkgeo map in update panel its working fine. But I have to put it into a update panel. So please give solution for this.


Thanks,


Badal



SampleCode.zip (1.43 KB)

 


Badal,
I think there is no problem with your code. It also works fine on my local machine. I think I’m a little confused with “ThinkGeo Map”, do you means “ThinkGeo World Maps Kit Overlay” or some overlay you defined? Can you clarify it? If you are using “WorldMapKitWmsWebOverlay”, please set the Projection property to “WorldMapKitProjection.SphericalMercator”. Can you give us a sample including all you mentioned, you can post it on the forum or send it to forumSupport@thinkgeo.com if it is inconvenient to be public. In this way, it will be helpful to resolve the issue.
Thanks,
Johnny  

 Hello Johnny,


 
The problem is in firefox browser. Please check the below link in firefox and try to zoom/pan the map, it will be disappeared
121.247.170.47/iTrack/admin/default.aspx
 
 
I have tried to find cause of this issue and i found the cause.My map definitation is as below,
<cc1:Map ID="mainMap" runat="server" Width="640" Height="480" onextentchanged="mainMap_ExtentChanged">
    </cc1:Map>
 
Now if i remove the   onextentchanged="mainMap_ExtentChanged" event then everything works fine as expected
 
I also notice that putting the map in updatepanel and adding the events on Map is causing this issue.
If i remove the map from updatepanel then evrything works but i need the map in updatepanel.
 
 
Though the above attachment contains the same code, i hereby pasting the code again for you

protected override void OnInit(EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            mainMap.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#B3C6D4"));
            mainMap.CurrentExtent = new RectangleShape(-13939426.6371, 6701997.4056, -7812401.86, 2626987.386962);
            mainMap.MapUnit = GeographyUnit.Meter;

            GoogleOverlay google = new GoogleOverlay("Google Map");
            google.JavaScriptLibraryUri = new Uri("maps.google.com/maps?file=api&v=2&key=ABQIAAAAoxK_HcqphMsnUQHEwLwHlRSavkNJi0NVTgm4UDidoiIU5dUJpRQW88FufPCp0aTPraxZgZFAIUHn3Q");
            google.GoogleMapType = GoogleMapType.Physical;
           
            mainMap.CustomOverlays.Add(google);
            //mainMap.CustomOverlays.Add(thinkGeoMap);
        }
    }


Are you also facing the issue in firefox? 
 Can someone please throw any light on it, it will be much appreciated

Are you also facing the issue in firefox? 
 Can someone please throw any light on it, it will be much appreciated

Badal, 
  
 I’m looking into it now.  
  
 Johnny

Badal, 
  
 It seems that the link you gave requires a username and password, i’m unable to login. Any help? 
  
 Thanks, 
 Johnny

 


Badal,
I created and test the sample with ExtentChanged event and GoogleOverlay, but the map works normally. Can you check the differences between the attached source code and yours? I did the test with the latest FireFox 3.6.8.
Thanks,
Johnny

GettingStarted.zip (2.15 KB)

 hello Johnny,


 
Thanks for reply and Sorry for the password thing.
I have checked your code and its just same as mine but i am getting the firefox issue, please check below link in Firefox 
121.247.170.47/iTrack/default.aspx
 
In case password needed then use, krunal/krunal123 as username/password
 
For ur reference i have attached the code for this page which is exactly same as yours
I have tested this issue in my Firefox 3.5.8 and also check the same issue in Firefox 4.0b1, in both the version issue is there, when you click '+' sign to zoom the map it will disapper
 

admin.zip (1.39 KB)

Badal, 
  
 I checked the webSite and attached sample with Firefox 3.6.8, but all works fine. It seems that i need to install the 3.5.8 verison and try again. I will let you know if anything is avaliable. 
  
 Thanks, 
 Johnny

Hello Johnny 
  
 I have checked on 4 system (3.5.4,3.5.6,3.5.8, 4.0b1) and the bug is still there, i have attached the video here now showing the bug… :) 
  
 Now i am trying to get the latest Map DLL and see if it helps… 
  
 Thanks,

 Sorry forgot to attache video in above post. 


Ohh, Max Upload size is restricted to 500Kb.


Please download the video from here, its 700Kb


121.247.170.47/iTrack/Video1.zip


 


Thanks



Hello, 
  
 I have also download the latest version, WebEditionFull4.0.99.0DllPackage.zip, but the problem is still there as shown in video 
  
 I dont know why its not working at my end… Its a website and everyone should see the same result, am i right here? :)  
  
 Please try to click "+" sign 3-4 times

Badal, 
  
 Thanks for your video, which makes me know what issue you are facing. However, i’m still unable to recreate it even if i uninstalled the Firefox 3.6.8 and reinstalled the version 3.5.8. Can you try the Firefox 3.6.8? Or can let us know the detail of your test enviroment, such as OS version, Language, curlture etc?  
  
 Thanks, 
 Johnny