[mapguide-users] Runtime map problem

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Tue Dec 2 07:40:30 EST 2008


I forgot to save the weblayout in the code below :(

Updated version is:

'Setup connection
Dim host As New Uri("http://localhost/mapguide/mapagent/mapagent.fcgi")
Dim conn As New HttpServerConnection(host, "Administrator", "admin", 
"en", True)

'You have to change the string below to point at a valid WebLayout
Dim weblayout as WebLayout = 
con.GetWebLayout("Library://mylayout.WebLayout")
Dim mapdefinition as MapDefinition = 
con.GetMapDefinition(weblayout.Map.ResourceId)

'Modify the initial view of the weblayout
weblayout.Map.InitialView = new MapViewType()
weblayout.Map.InitialView.Scale = 2000 'Zoom to 1:2000
weblayout.Map.InitialView.CenterX = (mapdefinition.Extents.MaxX - 
mapdefinition.Extents.MinX) + mapdefinition.Extents.MinX
weblayout.Map.InitialView.CenterY = (mapdefinition.Extents.MaxY - 
mapdefinition.Extents.MinX) + mapdefinition.Extents.MinY

'Obtain a unique session based id for the temporary weblayout (which is 
a copy of an existing WebLayout)
Dim tempid as ResourceIdentifier = new 
ResourceIdentifier(Guid.NewGuid(), 
OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout, con.SessionID)

'Save the layout, otherwise you can't reference it
con.SaveResourceAs(weblayout, tempid)

'Open the viewer, and use the temporary layout, since the map only 
exists in the
'current session, we must use that session, and NOT supply username/password
'BEWARE: The session belongs to the Administrator account, so the user 
gets full access to MapGuide (delete, modify, etc.)
Response.Redirect("/mapguide/ajaxviewer/?WEBLAYOUT=" & 
Server.UrlEncode(tempid) & "&SESSION=" & Server.UrlEncode(con.SessionID))


Regards, Kenneth Skovhede, GEOGRAF A/S



Kenneth Skovhede, GEOGRAF A/S skrev:
> To build a map, you must have all the components:
> 1. FeatureSource, references data
> 2. LayerDefinition, references a FeatureSource
> 3. MapDefinition, references multiple LayerDefinitions
> 4. WebLayout, references a MapDefinition
>
> All these items must be in a repository (either Library or Session), 
> otherwise they can't be referenced.
>
> When you write that you want to "create a WebLayout programatically",
> do you want to create ALL the above items, or do you have layers and 
> featuresources?
>
> (1) If you want to generate a WebLayout ResourceID, you should use:
> Dim res As New ResourceIdentifier("Filebased data/Maps/mapdata", ResourceTypes.WebLayout)
> If you want to read the name of an existing MapDefinition from another 
> layout, you must do:
> Dim weblayout as WebLayout = 
> con.GetWebLayout("Library://mylayout.WebLayout")
> Dim res as String = webLayout.Map.ResourceId
>
> (2) I don't understand the question.
>
> (3) The MapDefinition is an Xml document. Inside, it references layers,
> which references featuresources, as described above. It is very slow to
> do this, so when you open a map in the browser, the xml is transformed 
> into
> a binary object. This object contains all the info from the 
> MapDefinition and
> some info from the layers and featuresources.
>
> You need to know this, because if you try to toggle layer visibility 
> in the MapDefinition,
> nothing happens. In short, the Runtime Map is a binary object that you 
> can manipulate
> using the MapGuide (and Maestro)-API, and it only works for a 
> displayed map.
> Upon startup, the Runtime Map is identical to the MapDefinition it was 
> created from.
>
>
> A short example of using an existing WebLayout:
>
> Dim host As New Uri("http://localhost/mapguide/mapagent/mapagent.fcgi")
> Dim conn As New HttpServerConnection(host, "Administrator", "admin", "en", True)
>
> 'You have to change the string below to point at a valid WebLayout
>   
> Dim weblayout as WebLayout = 
> con.GetWebLayout("Library://mylayout.WebLayout")
> Dim mapdefinition as MapDefinition = 
> con.GetMapDefinition(weblayout.Map.ResourceId)
> weblayout.Map.InitialView = new MapViewType()
> weblayout.Map.InitialView.Scale = 2000 'Zoom to 1:2000
> weblayout.Map.InitialView.CenterX = (mapdefinition.Extents.MaxX - 
> mapdefinition.Extents.MinX) + mapdefinition.Extents.MinX
> weblayout.Map.InitialView.CenterY = (mapdefinition.Extents.MaxY - 
> mapdefinition.Extents.MinX) + mapdefinition.Extents.MinY
> Dim tempid as ResourceIdentifier = new 
> ResourceIdentifier(Guid.NewGuid(), 
> OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout, con.SessionID)
> Response.Redirect("/mapguide/ajaxviewer/?WEBLAYOUT=" & Server.UrlEncode(tempid) & "&USERNAME=Anonymous&PASSWORD=")
>
>
> Regards, Kenneth Skovhede, GEOGRAF A/S
>   
>
> padmini godavarthi skrev:
>> Hi,
>> Thanks for u r reply
>>
>> actually i wrote the code as
>>
>>
>>     Dim host As New Uri("http://localhost/mapguide/mapagent/mapagent.fcgi")
>>         Dim conn As New HttpServerConnection(host, "Administrator", "admin",
>> "en", True)
>>         Dim res As New ResourceIdentifier("Filebased data/Maps/mapdata",
>> ResourceTypes.MapDefinition)
>>         Dim mapId As String = res.ResourceId
>>
>>
>> with that i got the map resource id.
>>
>> But actually to run the application the url in the browser must be like
>>
>>
>> http://localhost/mapguide/mapviewerajax/?WEBLAYOUT=Library%3a%2f%2fFilebased+data%2fLayout%2flayout.WebLayout
>>
>> 1) How can i get this weblayout (like
>> Library%3a%2f%2fFilebased+data%2fLayout%2flayout.WebLayout) programmetically
>>
>> 2) I want to redirect to the ajax viewer sample application through asp.net
>> (like given by u )
>>      Response.Redirect("/mapguide/ajaxviewer/?WEBLAYOUT=...resourceId for
>> your WebLayout...&USERNAME=Anonymous&PASSWORD=");
>>
>> 3) Can u plz tell me the purpose of runtime map (actualli iam in configusing
>> state)
>>
>>
>>
>>
>>
>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>   
>>> Instead of re-posting the original question,
>>> could you try to explain what parts of my previous reply
>>> that are unclear or wrong?
>>>
>>> http://www.nabble.com/How-to-Load-Runtime-map-in-mapviewerajax-to20704038.html#a20769349
>>>
>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>
>>>
>>>
>>> padmini godavarthi skrev:
>>>     
>>>>  Hi ,
>>>> iam using mapguide open source 2.0( with .Net 2.0 + IIS 5.1)
>>>> Iam using dotnet viewer sample while running the application i observed
>>>> that
>>>> the layout path given in the application.
>>>>
>>>> as
>>>>
>>>> String webLayout =
>>>> "Library://Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout";
>>>>
>>>>  it works but now i want to create this weblayout in run time (by code)
>>>> using mapguide maestro api
>>>>
>>>> for this purpose i followed the link
>>>>
>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/RuntimeMap
>>>>
>>>> but i didnt get any out.
>>>>
>>>> can u plz tell me
>>>>
>>>> 1) how to create this weblayout in run time
>>>> 2) How it will works
>>>>
>>>> If u know this plz tell me the procedure.
>>>>
>>>>
>>>> Regards,
>>>> Padmini.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>   
>>>>       
>>> _______________________________________________
>>> mapguide-users mailing list
>>> mapguide-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>
>>>
>>>     
>>
>>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20081202/340409ea/attachment.html


More information about the mapguide-users mailing list