|
||||
[Chameleon] Item QueryPaul Spencer spencer@dmsolutions.caWed, 28 Jan 2004 08:32:14 -0500
|
Rene, unfortunately, the documentation for chameleon is still woefully incomplete but I am working on that and hope to have a decent widget developers guide roughed in for the next release ... which will be coming out in a month or two. Cheers, Paul Rene Teniere wrote: > Wow, that's exactly it. I appreciate the work you put in. The guys and I > here at work are still trying to wrap our heads around the architecture > of Chameleon. We've been looking up the PHP MapScript documentation to > get an idea as to variables that need to be passed to specific > functions. Can you tell me about other resources/web sites that you guys > have at DM Solutions or wherever that could make out lives easier for > programming new widgets, as opposed to bugging the user's list? > > Thanks, > > RT > > >>>>pagameba@magma.ca 2004-01-27 11:37:07 PM >>> > > Rene, it is indeed possible but I am not entirely sure that I > understand > exactly what you are trying to accomplish and what your inputs are. > Let > me try to outline what I think you are trying to do and how to solve > the > issue: > > Requirements: > > * you have a shapefile consisting of polygons that define the extents > of > provincial map sheets > * you want the user to be able to enter a mapsheet number and be zoomed > > to that mapsheet's extents > > Unknowns: > > * is the shapefile included in your application? Assume no. > > Approach: > > * using a copy of the LocateWidget with all inputs removed except NTS > MapSheet, and added a Provincial Map Sheet > > You need to locate the code that decides what the user wants to lookup, > > and supply some code to do your lookup. This is some code that looks > roughly right, but I haven't tested it and I don't guarantee that it is > > without typos or erroneous function names, but I think you will get the > > idea. > <?php > dl( 'php_dbf.dll' ); > $hDB = dbase_open( 'path-to-shapefile.dbf' ); > $nRecs = dbase_numrecords( $hDB ); > $nIndex = -1; //-1 means not found > for ($i=0; $i<$nRecs; $i++) > { > $aRec = dbase_get_record_with_names( $hDB, $i ); > if (strcasecmp( $aRec['fieldname'], $szUserInput ) == 0) > { > //found a match > $nIndex = $i; > break; > } > } > dbase_close( $hDB ); > > if ($nIndex >= 0) > { > //open shapefile using mapscript > $oShapeFile = ms_newShapeFileObj( 'path-to-shapefile.shp', > MS_SHP_POLYGON ); > if ($oShapeFile->numshapes < $nIndex ) > { > //oops, not enough shapes, error > } > else > { > //get the bounding box of the shape in a RectObj > $oRect = $oShape->getExtent( $nIndex ); > $oMap->setextent( $oRect->minx, $oRect->miny, $oRect->maxx, > $oRect->maxy ); > } > } > else > { > //report no records > } > $oShapeFile->free(); > ?> > > Rene Teniere wrote: > > >>Hi Paul, >> >>That's very similar to what I started off with (only I used the >>LocateWidget and got rid of all the inputs except NTS Map Sheet, and >>added my own - Provincial Map Sheet). The problem comes in that there > > is > >>a polygon index covering the whole province containing cells >>representing specific mapsheets. I have to be able to get chameleon > > to > >>find the mapsheet number within the index shapefile (the MAPSHEET > > item > >>in the index's table) using the user inputted text (essentially an > > item > >>query), then once I have the map object's extents returned, I would > > use > >>the setextent object to see it. Is this at all possible? If I >>misunderstood you, I apologize, however, I don't think I exactly >>explained the situation properly. >> >>Thanks, >> >>Rene >> >> >> >> >> >>>>>pagameba@magma.ca 2004-01-27 2:36:20 PM >>> >> >>Rene, >> >>to do this in Chameleon, you create a new widget from one of the >>existing ones that does something similar. For instance, the Scale >>widget does something similar (it uses an input box to allow the > > user > >>to >>type in a new scale value and then zooms to that scale. You would > > make > >>a copy of this widget and rename stuff appropriately. >> >>Your main work would go in the ParseURL function which is where you >>will >>get the FORM variables that were submitted (Scale is a good example > > of > >>this) and do something with them. In your case, you would use the >>input >>value to lookup the bounding box of a Map sheet and then apply those > > >>extents to the map object using something like >>$this->moMapSession->oMap->setextent( $nMinX, $nMinY, $nMaxX, $nMaxY >>); >> >>That's pretty much it. Note that the Scale widget is just a > > container > >>for the value, you use an UpdateMap widget to actually submit the >>page. >> >>Cheers, >> >>Paul >> >>Rene Teniere wrote: >> >> >> >>>Hi All, >>> >>>Been sitting down here with the office MapServer programmer, looking >> >>to >> >> >>>create an Item Query. This goes back to the message I left yesterday >> >>on >> >> >>>having an input box for the user to input a mapsheet number and >> >>return >> >> >>>the result on the map display. In MapServer, you would just set the >>>variables and send them to MapServer for processing. The question is >> >>how >> >> >>>is this achieved through Chameleon? In fact, how does it talk to >>>mapserver? All we need to do is be able to figure out what variables >> >>to >> >> >>>set, and where to send them. >>> >>>Example: In the bounding box widget, you set the user-defined >> >>bounding >> >> >>>coordinates to the variables and them pass them >>>on:window.opener.applyBoundingBox( nMinX, nMinY, nMaxX, nMaxY ); >>> >>>Is there anything that can help me out on figuring this stuff out? >> >>What >> >> >>>about the utils in htdocs_admin? >>> >>>Any help would be greatly appreciated >>>Rene >>> >>>Rene J.R. Teniere - BSc., D.GIS >>>GIS Technician >>>Nova Scotia Department of Natural Resources >>>Forestry Division (GIS) - Truro >>> >>>Phone: (902) 893-5655 >>>Mobile: (902) 209-8956 >>>_______________________________________________ >>>Chameleon mailing list >>>Chameleon@lists.maptools.org >>>http://lists.maptools.org/mailman/listinfo/chameleon >>> >> >> > -- ----------------------------------------------------------------- |Paul Spencer spencer@dmsolutions.ca | |-----------------------------------------------------------------| |Applications & Software Development | |DM Solutions Group Inc http://www.dmsolutions.ca/| -----------------------------------------------------------------
This archive was generated by Pipermail. |
MapTools.org -- Hosted by DM Solutions Group |