[mapguide-users] Create programmatically a map

sekko970 sekko970 at virgilio.it
Thu Feb 12 09:18:12 EST 2009


Hi Kenneth, and thanks for your promptly reply.

I had used an ancoding instance.

Below, you can see my code to create the new map:

Dim resID As New
MgResourceIdentifier(Library://.../maps/MyMap.MapDefinition)

Dim enc As New System.Text.UTF8Encoding(False)

Dim newMapDef As New MgByteSource(enc.GetBytes(XMLMapTemplate.OuterXml),
enc.GetByteCount(XMLMapTemplate.OuterXml))

newMapDef.SetMimeType(MgMimeType.Xml)

Dim resourceSrvc As MgResourceService =
siteConn.CreateService(MgServiceType.ResourceService)

resourceSrvc.SetResource(resID, newMapDef.GetReader(), Nothing)

Dim map As New MgMap()

map.Create(resourceSrvc, resID, MapName)

...

Then, this is my code to create the map layout:

Dim resID As New MgResourceIdentifier(Library://.../Layouts/MyMap.WebLayout)

Dim enc As New System.Text.UTF8Encoding(False)

Dim newLayoutDef As New
MgByteSource(enc.GetBytes(XMLLayoutTemplate.OuterXml),
enc.GetByteCount(XMLLayoutTemplate.OuterXml))

newLayoutDef.SetMimeType(MgMimeType.Xml)

resourceSrvc As MgResourceService =
siteConn.CreateService(MgServiceType.ResourceService)

resourceSrvc.SetResource(resID, newLayoutDef.GetReader(), Nothing)

map.Save(resourceSrvc)


Thanks for your help.
Fabio

------------------------------------------------------------------------------------------------------


Kenneth Skovhede, GEOGRAF A/S wrote:
> 
> You could have the problem that .Net emits an utf-8 byte-order-marker 
> (BOM), when
> writing xml.
> http://en.wikipedia.org/wiki/Byte-order_mark
> 
> To counter this, explicitly create an encoding instance:
> System.Text.Encoding enc = new System.Text.UTF8Encoding(false);
> 
> Then implement a xml writer, or manually convert the xml to bytes, using 
> the encoding.
> 
> FYI, the MaestroAPI is LGPL, and so you may use it as a library, even 
> for commercial applications,
> and it handles this quirk and others.
> 
> Regards, Kenneth Skovhede, GEOGRAF A/S
> 
> 
> 
> sekko970 skrev:
>> Dear all,
>>
>> I have created programmatically a map (and its layout) using MG .Net web
>> API.
>> After creation, the new map and layout are visible in MG Maestro, and
>> using
>> the 'Show in browser" button are correctly shown in browser.
>>
>> The problem happens when I load the map directly from browser, and the
>> following error appears:
>> << The type 'OSGeo.MapGuide.MgNullArgumentException' in assembly
>> 'MapGuideDotNetApi, Version= 2.0.2.30 11, Culture=neutral,
>> PublicKeyToken=null' is not marked as serializable >>.
>>
>> Then, simply saving the new layout from MG Maestro (without any
>> modification), and reloading the map directly from browser, the error
>> disappears and the map is correctly shown.
>>
>> After saving the layout, there aren't differences in map and layout XML
>> definitions.
>>
>> Have you any idea about?
>> Thank you in advance.
>> Fabio
>>
>>   
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> 
> 

-- 
View this message in context: http://n2.nabble.com/Create-programmatically-a-map-tp2314238p2315090.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list