[mapguide-users] Create programmatically a map

sekko970 sekko970 at virgilio.it
Wed Feb 18 06:40:55 EST 2009


Below you can see the new map and layout XML created from
http://localhost/mapguide/mapagent/index.html before and after the saving
from Maestro (is equals for both).

  <?xml version="1.0" encoding="UTF-8" ?> 
- <ResourceList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ResourceList-1.0.0.xsd">
- <ResourceDocument>
  <ResourceId>Library://.../newMap.MapDefinition</ResourceId> 
  <Depth>3</Depth> 
  <Owner>Administrator</Owner> 
  <CreatedDate>2009-02-18T11:31:29Z</CreatedDate> 
  <ModifiedDate>2009-02-18T11:31:29Z</ModifiedDate> 
- <ResourceDocumentHeader
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ResourceDocumentHeader-1.0.0.xsd">
- <Security xsi:noNamespaceSchemaLocation="ResourceSecurity-1.0.0.xsd">
  <Inherited>true</Inherited> 
- <Groups>
- <Group>
  <Name>Everyone</Name> 
  <Permissions>r,w</Permissions> 
  </Group>
  </Groups>
  </Security>
  </ResourceDocumentHeader>
  </ResourceDocument>
  </ResourceList>



  <?xml version="1.0" encoding="UTF-8" ?> 
- <ResourceList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ResourceList-1.0.0.xsd">
- <ResourceDocument>
  <ResourceId>Library://.../newLayout.WebLayout</ResourceId> 
  <Depth>3</Depth> 
  <Owner>Administrator</Owner> 
  <CreatedDate>2009-02-18T11:35:51Z</CreatedDate> 
  <ModifiedDate>2009-02-18T11:36:32Z</ModifiedDate> 
- <ResourceDocumentHeader
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ResourceDocumentHeader-1.0.0.xsd">
- <Security xsi:noNamespaceSchemaLocation="ResourceSecurity-1.0.0.xsd">
  <Inherited>true</Inherited> 
- <Groups>
- <Group>
  <Name>Everyone</Name> 
  <Permissions>r,w</Permissions> 
  </Group>
  </Groups>
  </Security>
  </ResourceDocumentHeader>
  </ResourceDocument>
  </ResourceList>


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


Ivan Milicevic wrote:
> 
> Please, before you open layout and map in Maestro go to:
> http://localhost/mapguide/mapagent/index.html -> go to
> Resource-->GetResourceContent--> and type correct resource ID on right
> side. See is there any strange things in output XML file. Compare it
> after saving it in Maestro.
> 
> -----Original Message-----
> From: mapguide-users-bounces at lists.osgeo.org
> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of sekko970
> Sent: Wednesday, February 18, 2009 12:05 PM
> To: mapguide-users at lists.osgeo.org
> Subject: RE: [mapguide-users] Create programmatically a map
> 
> 
> This is my problem:
> 
> 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? 
> 
> ------------------------------------------------------------------------
> ------------------------------
> 
> 
> Ivan Milicevic wrote:
>> 
>> Can you write pseudo code of your task? What do you want to do? I need
>> little more information about your problem.
>> 
>> -----Original Message-----
>> From: mapguide-users-bounces at lists.osgeo.org
>> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of sekko970
>> Sent: Wednesday, February 18, 2009 11:42 AM
>> To: mapguide-users at lists.osgeo.org
>> Subject: RE: [mapguide-users] Create programmatically a map
>> 
>> 
>> Hi Ivan,
>> 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) 
>> 
>> Perhaps between map and layout creation I should refresh the mapframe
> as
>> suggested from you?
>> 
>> Thanks in advance for your help.
>> Fabio
>> 
>>
> ------------------------------------------------------------------------
>> ------------------------------
>> 
>> 
>> Ivan Milicevic wrote:
>>> 
>>> Can you provide us code sample?
>>> 
>>> -----Original Message-----
>>> From: mapguide-users-bounces at lists.osgeo.org
>>> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of sekko970
>>> Sent: Wednesday, February 18, 2009 10:38 AM
>>> To: mapguide-users at lists.osgeo.org
>>> Subject: RE: [mapguide-users] Create programmatically a map
>>> 
>>> 
>>> Hi Ivan,
>>> 
>>> thanks for your suggestion, but my problem is not to refresh the
>> viewer
>>> to
>>> show the map just created, but is the correct creation of new map and
>>> layout.
>>> 
>>> I think to have found the origin of my problem, but I don't
> understand
>>> the
>>> error:
>>> 
>>> Argument is null. Exception occurred in method
>>> MgWebLayout.ParsePrintCommand
>>> at line 880 in file
>>>
>>
> c:\build_bond_area\bond_nightly\build_41.3\ent\os\web\src\webapp\WebLayo
>>> ut.cpp 
>>> 
>>> Have you some idea?
>>> Thanks, Fabio
>>> 
>>>
>>
> ------------------------------------------------------------------------
>>> ------------------------------
>>> 
>>> 
>>> Ivan Milicevic wrote:
>>>> 
>>>> Hello,
>>>> 
>>>> You can change href of mapFrame. Here is sample code.
>>>> 
>>>> var mapa = "cijevi"; //defines map name
>>>> var stringMape = "Library%3a%2f%2fPROJEKTI%2fSUPRANET%2fMAPE%2f" +
>>> mapa;
>>>> var hrefMapa =
>>>>
>>>
>>
> "http://172.21.10.3/mapguide/mapviewernet/mapframe.aspx?MAPDEFINITION="
>>>> + stringMape +
>>>>
>>>
>>
> ".MapDefinition&amp;TYPE=HTML&amp;SHOWLEGEND=0&amp;SHOWPROP=0&amp;INFOWI
>>>>
>>>
>>
> DTH=0&amp;LOCALE=en&amp;HLTGT=1&amp;HLTGTNAME=&amp;SHOWSLIDER=0&amp;SESS
>>>> ION=" + mgSessionId + ";
>>>> 
>>>> //changing mapFrame href
>>>> mapFrame.location.href = hrefMapa;
>>>> 
>>>> 
>>>> Hope this helps.
>>>> 
>>>> -----Original Message-----
>>>> From: mapguide-users-bounces at lists.osgeo.org
>>>> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of
> sekko970
>>>> Sent: Wednesday, February 18, 2009 9:57 AM
>>>> To: mapguide-users at lists.osgeo.org
>>>> Subject: Re: [mapguide-users] Create programmatically a map
>>>> 
>>>> 
>>>> Hi Kenneth,
>>>> I need again your help about my problem.
>>>> 
>>>> I think the problem is that after new map run-time creation in
>> library
>>>> repository, I cannot use its map definition to create its web
> layout.
>>>> 
>>>> How can I assign the new map to the layout?
>>>> 
>>>> Thanks again, Fabio
>>>> 
>>>>
>>>
>>
> ------------------------------------------------------------------------
>>>> ------------------------------
>>>> 
>>>> 
>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>> 
>>>>> Try to look at the Maestro code:
>>>>>
>>>>
>>>
>>
> http://trac.osgeo.org/mapguide/browser/trunk/Tools/Maestro/MaestroAPI/Lo
>>>> calNativeConnection.cs#L182
>>>>> 
>>>>> Hopefully you will find a small difference there.
>>>>> 
>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>> 
>>>>> 
>>>>> 
>>>>> sekko970 skrev:
>>>>>> Yes, the "OuterXml" property contains the XML header line.
>>>>>> Fabio
>>>>>>
>>>>>>
>>>>
>>>
>>
> ------------------------------------------------------------------------
>>>> ------------------------------
>>>>>>
>>>>>>
>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>   
>>>>>>> Does the "OuterXml" property contain the <? version="1.0" 
>>>>>>> encoding="utf-8" standalone="true" ?> line?
>>>>>>>
>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> sekko970 skrev:
>>>>>>>     
>>>>>>>> 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>     
>>>>>>>>>         
>>>>>>>>   
>>>>>>>>       
>>>>>>> _______________________________________________
>>>>>>> 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
>>>>> 
>>>>> 
>>>> 
>>>> -- 
>>>> View this message in context:
>>>>
>>>
>>
> http://n2.nabble.com/Create-programmatically-a-map-tp2314238p2345737.htm
>>>> l
>>>> Sent from the MapGuide Users mailing list archive at Nabble.com.
>>>> 
>>>> _______________________________________________
>>>> 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
>>>> 
>>>> 
>>> 
>>> -- 
>>> View this message in context:
>>>
>>
> http://n2.nabble.com/Create-programmatically-a-map-tp2314238p2345874.htm
>>> l
>>> Sent from the MapGuide Users mailing list archive at Nabble.com.
>>> 
>>> _______________________________________________
>>> 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
>>> 
>>> 
>> 
>> -- 
>> View this message in context:
>>
> http://n2.nabble.com/Create-programmatically-a-map-tp2314238p2346122.htm
>> l
>> Sent from the MapGuide Users mailing list archive at Nabble.com.
>> 
>> _______________________________________________
>> 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
>> 
>> 
> 
> -- 
> View this message in context:
> http://n2.nabble.com/Create-programmatically-a-map-tp2314238p2346216.htm
> l
> Sent from the MapGuide Users mailing list archive at Nabble.com.
> 
> _______________________________________________
> 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
> 
> 

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



More information about the mapguide-users mailing list