[mapguide-users] Load different map in weblayout - Basic viewer
frosty1_4me
kbowman at cityofgp.com
Fri Oct 7 11:52:16 EDT 2011
I'm attempting at changing the map within the weblayout of the basic viewer.
I've went through some similar posts that have common functionality within
them but so far I haven't got it to work. Can someone point out what I'm
missing?
Below is the code I'm using to get the map name in the XML and save the
Weblayout:
MapGuideApi.MgInitializeWebTier(classLibraryPublicConstants.constants.configFilePath)
Dim userInfo As MgUserInformation = New
MgUserInformation(sessionID)
Dim siteConnection As MgSiteConnection = New MgSiteConnection()
siteConnection.Open(userInfo)
Dim resourceService As MgResourceService =
siteConnection.CreateService(MgServiceType.ResourceService)
Dim featureService As MgFeatureService =
siteConnection.CreateService(MgServiceType.FeatureService)
Dim queryOptions As MgFeatureQueryOptions = New
MgFeatureQueryOptions()
Dim map As MgMap = New MgMap(siteConnection)
map.Open(mapName)
Dim webLayoutResourceIDPath As MgResourceIdentifier = New
MgResourceIdentifier("Library://Web_Layouts/" & webLayoutName &
".WebLayout")
Dim webLayoutByteReader As MgByteReader =
resourceService.GetResourceContent(webLayoutResourceIDPath)
Dim webLayoutXML As New XmlDocument
webLayoutXML.LoadXml(webLayoutByteReader.ToString)
'new
Dim MapNodeList As XmlNodeList =
webLayoutXML.GetElementsByTagName("Map")
For Each node As XmlElement In MapNodeList
Dim VisibleNodeList As XmlNodeList =
node.GetElementsByTagName("ResourceId")
If VisibleNodeList.Count > 0 Then
VisibleNodeList.Item(0).FirstChild.Value = newMapName
End If
Next
Dim MapDefinitionStr As String =
webLayoutXML.OuterXml.ToString()
'end new
Dim mapNode As XmlNode =
webLayoutXML.GetElementsByTagName("Map").Item(0)
mapNode.InnerText = newMapName
Dim xmlStream As New MemoryStream
webLayoutXML.Save(xmlStream)
Dim webLayoutDefinition As Byte() = xmlStream.ToArray
Dim utf8 As Encoding = Encoding.UTF8
Dim webLayoutDefString As String = New
String(utf8.GetChars(webLayoutDefinition))
webLayoutDefinition = New Byte(webLayoutDefString.Length - 1) {}
Dim byteCount As Integer = utf8.GetBytes(webLayoutDefString, 1,
webLayoutDefString.Length - 1, webLayoutDefinition, 0)
Dim byteSource As MgByteSource = New
MgByteSource(webLayoutDefinition, webLayoutDefinition.Length)
byteSource.SetMimeType(MgMimeType.Xml)
Dim tempWebLayoutResID As New MgResourceIdentifier("Session:" &
sessionID & "//" & webLayoutName & ".WebLayout")
'resourceService.SetResource(tempWebLayoutResID,
byteSource.GetReader(), Nothing)
resourceService.SetResource(tempWebLayoutResID, New
MgByteReader(MapDefinitionStr, "text/xml"), Nothing)
map.Save(resourceService)
The dropdown changes the selected map:
Dim mgSessionId As String = hdnSession.Value
Dim mapName As String = hdnMapName.Value
strIFrameSrc = strLayoutTemplateLocation +
"?WEBLAYOUT=Library%3a%2f%2fWeb_Layouts%2fMY_BASIC.WebLayout&LOCALE=en&username=Anonymous&password="
Below is the aspx of the page that loads the map:
<iframe height="100%" id="iFrameMap"
name="iFrameMap" width="100%" src="<%=
strIFrameSrc %>" >
</iframe>
Currently the new map doesn't load, it just reloads the existing map again
and when doing so it also loses the weblayout configuration too. (ie. size
of mapframe is no longer 100%)
Any help on this would be appreciated.
thanks.
--
View this message in context: http://osgeo-org.1803224.n2.nabble.com/Load-different-map-in-weblayout-Basic-viewer-tp6869814p6869814.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list