[mapguide-users] Map Layers Transferring Between Users
Paul Spencer
pagameba at gmail.com
Thu Jul 26 13:22:49 EDT 2007
I would try using:
$routeFeatureSourceName = 'Session:'.$sessionId."//
PostGisData.FeatureSource";
Also make sure to use a layer definition with a similar id,
'Session:'.$sessionId.'//PostGisLayer.LayerDefinition'
and set it's ResourceId to point at the $routeFeatureSourceName when
creating the XML for the layer definition.
There is no problem using session based resources in a map.
Cheers
Paul
On 26-Jul-07, at 12:36 PM, Scott, Brian wrote:
> Hi Paul -
>
> Thanks for the ideas. My code was based on the developer guide /
> shebogoyan sample code provided with the install.
> More or less I took the sample code, modified it for my use to get
> one layer to show up, then cloned the functionality to get it to
> work for several layers. There is one big difference between the
> sample program and what I've written, namely that due to problems
> with filtering on a layer w/PostGIS, I am querying an existing
> feature of points, getting the lat long, and then creating points
> on the fly using those values, creating new layers based on the
> properties of each point, and putting the layers back into the
> repository.
>
> I'm not sure I am explicity cloning a feature from the library and
> associating it into the session or not.
>
> (Apologies in advance for this being so long winded)
>
> At a high level, here is what I'm doing:
>
> 1) Collecting user input.
> 2) Identifying records in the db that fit the users selection
> criteria. These records have lat long and geometry associated with
> them.
> 3) Create a resource service:
> $resourceService = $siteConnection->CreateService
> (MgServiceType::ResourceService);
>
> 3) Create a feature service for each type of point / layer I need
> to create:
> $routeFeatureService = $siteConnection->CreateService
> (MgServiceType::FeatureService);
>
> 4) Open the map.
> 5) Create a class definition for each type of point / layer I need
> to create.
> 6) Define class properties for each class created.
> 7) Create a feature schema for each class, and associating the
> class definition to it.
> $routeFeatureSchema = new MgFeatureSchema($routeSchemaName, "Point
> schema for Routes");
> $routeFeatureSchema->GetClasses()->Add($routeClassDefinition);
> 8) Creating resource identifiers:
> $routeFeatureSourceName = 'Library://COT_WebViewer/BaseMap/Data/
> PostGisData.FeatureSource';
> $routeResourceIdentifier = new MgResourceIdentifier
> ($routeFeatureSourceName);
>
> Here, I am using the 'Library:' prefix, but it seems to be
> necessary. (?) If I don't put a valid path, but try 'Session:'
> instead, it bombs out.
> 9) Creating sdf parameters
> $sdfParams = new MgCreateSdfParams("ArbitraryXY", $wkt,
> $routeFeatureSchema);
> 10) Creating a new feature source:
> $routeFeatureService->CreateFeatureSource
> ($routeResourceIdentifier, $sdfParams);
>
> *? Do I need to perform an additional operation at this point to
> have the resultant feature source associated with the session only?*
>
> 11) Looping through database results, create points of appropriate
> types, add them to property collections.
> 12) Adding the property collections to the feature source:
>
> $cmd = new MgInsertFeatures($routeClassDefName,
> $routeBatchPropertyCollection);
> $routeFeatureCommandCollection = new MgFeatureCommandCollection();
> $routeFeatureCommandCollection->Add($cmd);
> $routeFeatureService->UpdateFeatures($routeResourceIdentifier,
> $routeFeatureCommandCollection, false);
>
> ? Is this final call modifying the features in the library and
> not the session?
>
> 13) Create a new layer definition, and layer resource. Add the
> layer resource to the map.
> 14) Save the map back to the session repository:
>
> $sessionIdName = "Session:".$sessionId."//COT_Utilities.Map";
> $sessionResourceID = new MgResourceIdentifier($sessionIdName);
> $sessionResourceID->Validate();
> $map->Save($resourceService, $sessionResourceID);
>
> Any and all insight is appreciated!
>
> -pD
>
>
>
> -----Original Message-----
> From: mapguide-users-bounces at lists.osgeo.org
> [mailto:mapguide-users-bounces at lists.osgeo.org]On Behalf Of Paul
> Spencer
> Sent: Thursday, July 26, 2007 11:11 AM
> To: MapGuide Users Mail List
> Subject: Re: [mapguide-users] Map Layers Transferring Between Users
>
>
> Hi pD,
>
> it sounds as if you are modifying something in the Library:// rather
> than making a copy in the Session:// and modifying it there (either
> your Layer or FeatureSource I'd guess). Perhaps you could describe
> what the code does (in general terms) and we might be able to point
> out where you should be using the Session instead.
>
> Cheers
>
> Paul
>
> On 25-Jul-07, at 4:23 PM, passionlessDrone wrote:
>
>>
>> Hello friends -
>>
>> We've created a piece to dynamically add layers and points based on
>> human
>> input. If the user submits input for which there is no matching
>> criteria,
>> we make no modifications to the map, but I still call
>> GetMapFrame().Refresh(). Great. However, if two humans are
>> running the
>> report, the following can happen:
>>
>> 1) User A runs a report with successful criteria that returns with
>> points
>> and new layers. They are displayed correctly on the map at refresh
>> time.
>> 2) User B runs a report with successful criteria that returns with
>> points
>> and new layers. They are displayed correctly on the map at refresh
>> time.
>> 2) User A runs a report without succesful crieteria that makes no
>> modifications to the base map.
>> 3) User A's map refreshes, and he sees the new layers / points that
>> User B
>> sees.
>>
>> User A and User B are logged in as separate entities and debugging
>> validates
>> that they have separate session id values. The layer names are
>> the same
>> between the two users.
>>
>> I suppose I could just write something that when no criteria match
>> I get the
>> map, get the layers, and strip out any that fit the criteria that
>> the layers
>> that he 'shouldn't' see, but this is more like hiding the problem
>> than
>> understanding it and fixing it. I guess I'm also not sure if this
>> might
>> impact another user.
>>
>> Any insight is greatly appreciated!
>>
>> -pD
>>
>>
>> --
>> View this message in context: http://www.nabble.com/Map-Layers-
>> Transferring-Between-Users-tf4147718s16610.html#a11799272
>> 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
>
> +-----------------------------------------------------------------+
> |Paul Spencer pspencer at dmsolutions.ca |
> +-----------------------------------------------------------------+
> |Chief Technology Officer |
> |DM Solutions Group Inc http://www.dmsolutions.ca/ |
> +-----------------------------------------------------------------+
>
>
>
>
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>
>
>
>
>
> **********************************************************************
> **************
> This footnote confirms that this email message has been scanned by
> PineApp Mail-SeCure for the presence of malicious code, vandals &
> computer viruses.
> **********************************************************************
> **************
>
>
>
>
>
>
>
>
> **********************************************************************
> **************
> This footnote confirms that this email message has been scanned by
> PineApp Mail-SeCure for the presence of malicious code, vandals &
> computer viruses.
> **********************************************************************
> **************
>
>
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
+-----------------------------------------------------------------+
|Paul Spencer pspencer at dmsolutions.ca |
+-----------------------------------------------------------------+
|Chief Technology Officer |
|DM Solutions Group Inc http://www.dmsolutions.ca/ |
+-----------------------------------------------------------------+
More information about the mapguide-users
mailing list