Dear Shoby, DON'T BE LAZY OR HIJACK THREADS http://www.gerv.net/hacking/how-to-ask-good-questions/
z On Tue, Mar 5, 2013 at 4:32 PM, Shoby Shah <[email protected]> wrote: > Can u please tell me how can i add layer dynamically from search > results, please help me out as i am new user. > please give me the steps. > thanks. > > > > > Date: Mon, 4 Mar 2013 18:23:58 -0800 > > From: [email protected] > > To: [email protected] > > Subject: Re: [mapguide-users] Set feature properties to a point > > > > > After you have created the properties, you need to create your feature > schema > > and add data to the SDF. > > > > Your code looks ok. I did something similar in PHP sometime ago. > > > > See: > > > > function makePoint($id, $x, $y) { > > //makes a point > > > > global $fp; > > > > //debug ($fp, "makePoint():\r\n"); > > $name = "Node " . $id; > > $propertyCollection = new MgPropertyCollection(); > > //name prop > > $nameProperty = new MgStringProperty("NAME", $name); > > $propertyCollection->Add($nameProperty); > > //id prop > > $idProperty = new MgInt32Property("ID", $id); > > $propertyCollection->Add($idProperty); > > > > //geom > > $wktReaderWriter = new MgWktReaderWriter(); > > $agfReaderWriter = new MgAgfReaderWriter(); > > > > $geometry = $wktReaderWriter->Read("POINT XY ($x $y)"); > > $geometryByteReader = $agfReaderWriter->Write($geometry); > > $geometryProperty = new MgGeometryProperty("GEOM", $geometryByteReader); > > $propertyCollection->Add($geometryProperty); > > > > return $propertyCollection; > > } > > > > function addNodesLayerToGroup($layer, $layerGroupName, > > $layerGroupLegendLabel, &$map) { > > > > global $fp; > > > > // Adds a layer to a layer group. If necessary, it creates the layer > > group. > > // Get the layer group > > $layerGroupCollection = $map->GetLayerGroups(); > > if ($layerGroupCollection->Contains($layerGroupName)) { > > $layerGroup = $layerGroupCollection->GetItem($layerGroupName); > > } else { > > // It does not exist, so create it > > $layerGroup = new MgLayerGroup($layerGroupName); > > $layerGroup->SetVisible(true); > > $layerGroup->SetDisplayInLegend(true); > > $layerGroup->GetExpandInLegend(); > > $layerGroup->SetLegendLabel($layerGroupLegendLabel); > > $layerGroupCollection->Add($layerGroup); > > //place the group under "Filters" > > //$parentGroup = $layerGroupCollection->GetItem("Filters"); > > //$layerGroup->SetGroup($parentGroup); > > } > > > > // Add the layer to the group > > $layer->SetGroup($layerGroup); > > //make the layer and its parents visible > > $elem = $layer; > > while ($elem != NULL) { > > $elem->SetVisible(true); > > $elem->SetDisplayInLegend(true); > > $elem->GetExpandInLegend(); > > $elem = $elem->GetGroup(); > > } > > } > > > > function addNodesToMap($nodes) { > > //adds nodes to the map > > > > global $sessionId, $mapName, $fp; > > > > try { > > $userInfo = new MgUserInformation($sessionId); > > $siteConnection = new MgSiteConnection(); > > $siteConnection->Open($userInfo); > > $resourceService = > > $siteConnection->CreateService(MgServiceType::ResourceService); > > $featureService = > > $siteConnection->CreateService(MgServiceType::FeatureService); > > > > // Open the map > > $map = new MgMap(); > > $map->Open($resourceService, $mapName); > > > > // Create a feature source with point data. > > // Create a feature class definition for the new feature source > > $classDefinition = new MgClassDefinition(); > > $classDefinition->SetName("Points"); > > $classDefinition->SetDescription("Feature class with point data."); > > $classDefinition->SetDefaultGeometryPropertyName("GEOM"); > > > > // Create a FeatId property > > $featIdProp = "FeatId"; > > $identityProperty = new MgDataPropertyDefinition($featIdProp); > > $identityProperty->SetDataType(MgPropertyType::Int32); > > $identityProperty->SetAutoGeneration(true); > > $identityProperty->SetReadOnly(true); > > // Add the identity property to the class definition > > $classDefinition->GetIdentityProperties()->Add($identityProperty); > > $classDefinition->GetProperties()->Add($identityProperty); > > > > // Create a name property > > $nameProp = "NAME"; > > $nameProperty = new MgDataPropertyDefinition($nameProp); > > $nameProperty->SetDataType(MgPropertyType::String); > > // Add the name property to the class definition > > $classDefinition->GetProperties()->Add($nameProperty); > > > > // Create an ID property > > $idProp = "ID"; > > $idProperty = new MgDataPropertyDefinition($idProp); > > $idProperty->SetDataType(MgPropertyType::Int32); > > // Add the name property to the class definition > > $classDefinition->GetProperties()->Add($idProperty); > > > > // Create a geometry property > > $geometryProperty = new MgGeometricPropertyDefinition("GEOM"); > > $geometryProperty->SetGeometryTypes(MgFeatureGeometricType::Point); > > // Add the geometry property to the class definition > > $classDefinition->GetProperties()->Add($geometryProperty); > > > > // Create a feature schema > > $featureSchema = new MgFeatureSchema("PointSchema", "Point schema"); > > // Add the feature schema to the class definition > > $featureSchema->GetClasses()->Add($classDefinition); > > > > // Create the feature source > > $featureSourceName = > > 'Library://SS_testing/Network_analysis/Data/Nodes.FeatureSource'; > > $resourceIdentifier = new MgResourceIdentifier($featureSourceName); > > $srs = $map->GetMapSRS(); > > $spatialContext = "LL84"; > > $sdfParams = new MgCreateSdfParams($spatialContext, $srs, > > $featureSchema); > > $featureService->CreateFeatureSource($resourceIdentifier, $sdfParams); > > > > // We need to add some data to the sdf before using it. The spatial > > context reader must have an extent. > > $batchPropertyCollection = new MgBatchPropertyCollection(); > > $wktReaderWriter = new MgWktReaderWriter(); > > $agfReaderWriter = new MgAgfReaderWriter(); > > $geometryFactory = new MgGeometryFactory(); > > > > for ($t=0; $t < count($nodes); $t++) { > > $node = $nodes[$t]; > > $x = $node->X; > > $y = $node->Y; > > $id = $node->ID; > > //$coordLL = transformCoordinate("CA83-VF", $spatialContext, $x, $y); > > //$x = $coordLL->GetX(); > > //$y = $coordLL->GetY(); > > $propertyCollection = makePoint($id, $x, $y); > > $batchPropertyCollection->Add($propertyCollection); > > unset($propertyCollection); > > } > > > > // Add the batch property collection to the feature source > > $cmd = new MgInsertFeatures("Points", $batchPropertyCollection); > > $featureCommandCollection = new MgFeatureCommandCollection(); > > $featureCommandCollection->Add($cmd); > > > > // Execute the "add" commands > > $featureService->UpdateFeatures($resourceIdentifier, > > $featureCommandCollection, false); > > > > // Create a new layer > > $factory = new LayerDefinitionFactory(); > > > > // Create a mark symbol > > $resourceId = > > 'Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary'; > > $symbolName = 'PushPin'; > > $width = '11'; // unit = points > > $height = '11'; // unit = points > > $color = 'FFFF0000'; > > $markSymbol = $factory->CreateMarkSymbol($resourceId, $symbolName, > > $width, $height, $color); > > > > // Create a text symbol > > $text = $idProp; //"ID" > > $fontHeight="12"; > > $foregroundColor = 'FF000000'; > > $textSymbol = $factory->CreateTextSymbol($text, $fontHeight, > > $foregroundColor); > > > > // Create a point rule. > > $legendLabel = 'Nodes'; > > $filter = ''; > > //$pointRule = $factory->CreatePointRule($legendLabel, $filter, > > $textSymbol, $markSymbol);//don't use symbols > > $pointRule = $factory->CreatePredefinedPointRule($legendLabel, > > $filter, $text); > > > > // Create a point type style. > > $pointTypeStyle = $factory->CreatePointTypeStyle($pointRule); > > > > // Create a scale range. > > $minScale = '0'; > > $maxScale = '1000000000000'; > > $pointScaleRange = $factory->CreateScaleRange($minScale, $maxScale, > > $pointTypeStyle); > > > > // Create the layer definiton. > > $featureName = 'PointSchema:Points'; > > $geometry = 'GEOM'; > > //$layerDefinition = > > $factory->CreateLayerDefinition($featureSourceName, $featureName, > $geometry, > > $pointScaleRange); > > //the original class doesn't use mappings for the features' layer > > definition > > $layerDefinition = > > $factory->CreateNodeLayerDefinition($featureSourceName, $featureName, > > $nameProp, $idProp, $featIdProp, $geometry, $pointScaleRange); > > > > // Add the layer to the map > > $newLayer = add_layer_definition_to_map($layerDefinition, "Points", > > "Nodes", $sessionId, $resourceService, $map); > > addNodesLayerToGroup($newLayer, "Analysis", "Analysis", $map); > > > > // Turn on the visibility of this layer. > > // (If the layer does not already exist in the map, it will be visible > > by default when it is added. > > // But if the user has already run this script, he or she may have set > > the layer to be invisible.) > > $layerCollection = $map->GetLayers(); > > if ($layerCollection->Contains("Points")) { > > $pointsLayer =$layerCollection->GetItem("Points"); > > $pointsLayer->SetVisible(true); > > $pointsLayer->SetSelectable(true); > > } > > > > // Save the map back to the session repository > > $sessionIdName = "Session:$sessionId//$mapName.Map"; > > $sessionResourceID = new MgResourceIdentifier($sessionIdName); > > $sessionResourceID->Validate(); > > $map->Save($resourceService, $sessionResourceID); > > } > > > > catch (MgException $e) { > > debug ($fp, "\tMgException:" . $e->GetMessage() . "\r\n"); > > } > > } > > > > > > > > -- > > View this message in context: > http://osgeo-org.1560.n6.nabble.com/Set-feature-properties-to-a-point-tp5037772p5038429.html > > Sent from the MapGuide Users mailing list archive at Nabble.com. > > _______________________________________________ > > mapguide-users mailing list > > [email protected] > > http://lists.osgeo.org/mailman/listinfo/mapguide-users > > _______________________________________________ > mapguide-users mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/mapguide-users > > -- Zac Spitzer Solution Architect / Director Ennoble Consultancy Australia +61 405 847 168
_______________________________________________ mapguide-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapguide-users
