Perhaps try to simplify.  Your shape files use DBF as the attributes, you
could just launch a web page that seaches for the field you need.
http://www.yinfor.com/blog/archives/2008/01/php_connect_dbf_file.html

Then you can use a combination of the JavaScript API and Web API to zoom in.

For Basic Web Layout try
http://www.osgeo.org/files/mapguide/docs/viewerapi/viewerapi.html
Specifically SetSelectionXML(selectionXml) and ExecuteMapAction(10)

For Fusion Application Definitions try
www\fusion\layers\MapGuide\MapGuideViewerApi.js

function SetSelectionXML(selectionXml) {
    var Fusion = window.top.myEmbeddedFrameNameWhateverItsCalled.Fusion;
    var mapWidget = Fusion.getWidgetById(mgApiMapWidgetId);
    if (mapWidget && mapWidget.isMapLoaded()) {
        mapWidget.setSelection(selectionXml, true);
    }
}

You can use this PHP if you invokeURL - it sends the MAPNAME and SESSION to
the page, you just need to pass the KEY (i.e. 234) the KEYNAME (i.e.
PARCEL_ID) and the LAYERNAME (i.e. PARCELS)

<?php
$configFilePath = "C:\Program Files\OSGeo\MapGuide\Web\www\webconfig.ini";

$session = urldecode(($_SERVER['REQUEST_METHOD'] == "POST")?
$_POST['SESSION']: $_GET['SESSION']);
$mapName = urldecode(($_SERVER['REQUEST_METHOD'] == "POST")?
$_POST['MAPNAME']: $_GET['MAPNAME']);

$key =  urldecode(stripslashes($_REQUEST["KEY"]));

//SINGLE QUOTES AROUND STRINGS -COMMENT OUT THESE LINES IF THE FILTER IS NOT
A STRING
$key = $key . ",0";
$key = str_replace(",", "','", $key);
$key = "'" . $key . "'";
//END OF PUTTING SINGLE QUOTES AROUND THE LIST


$keyName = urldecode(stripslashes($_REQUEST["KEYNAME"]));       
$layerName = urldecode(stripslashes($_REQUEST["LAYERNAME"]));

try

    {
        MgInitializeWebTier($configFilePath);
        $userInfo = new MgUserInformation($session);
        $siteConnection = new MgSiteConnection();
        $siteConnection->Open($userInfo);
        $featureService = $siteConnection->CreateService(2);
        $resourceService = $siteConnection->CreateService(0);
        $map = new MgMap($siteConnection);

        $map->Open($mapName);
        $queryOptions = new MgFeatureQueryOptions();
        $queryOptions->SetFilter($keyName . " in (" . $key . ")");
        $layer = $map->GetLayers()->GetItem($layerName);
        $ResId = new MgResourceIdentifier($layer->GetFeatureSourceId());
        $featureReader = $featureService->SelectFeatures($ResId, $layerName,
$queryOptions);

        $selection = new MgSelection($map);
        $selection->AddFeatures($layer, $featureReader, 0);
        $selectionXml = $selection->ToXml();
        $selection->Save($resourceService, $map->GetName()); 
        //dump the XML out to a JAVASCRIPT variable     
        echo  $selectionXml;
        $featureReader->Close();
   }
    catch (MgException $e)
    {
     echo $e->GetMessage();
     echo $e->GetDetails();
    }
?>

regards 
gordon


--
View this message in context: 
http://osgeo-org.1803224.n2.nabble.com/Search-for-a-feature-based-on-feature-ID-tp6829659p6831863.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

Reply via email to