1) send coordinates from js to PHP: plugins/coordinates/coordinates.js
2) convert coordinates: plugins/coordinates/x_coords.php
3) many options:
3a) search via pgsql: see plugins/digitizepoints/*
3b) or use pmapper/incphp/x_ajax/x_info.php and use
json_decode($queryResult) to find your results indexes (search for
"shpindex" in the code for instance)
3c) copy / paste and modify the incphp/query/search.php and
incphp/query/query.php
3d) search the shapes with mapscript
(http://mapserver.org/mapscript/index.html ) like in this quick and
dirty example:
// prevent XSS
if (isset($_REQUEST['_SESSION'])) exit();
session_start();
require_once($_SESSION['PM_INCPHP'] . '/globals.php');
require_once($_SESSION['PM_INCPHP'] . '/common.php');
$layer = $map->getLayerByName('YOUR_LAYER_NAME');
// xy pix -> geo pt
$imgxy = $_REQUEST['imgxy'];
$tmp = explode('+', $imgxy);
$xPixel = $tmp[0];
$yPixel = $tmp[1];
$xGeo = $_SESSION['GEOEXT']['minx'] + (($xPixel/$_SESSION['mapwidth']) *
($_SESSION['GEOEXT']['minx']-$_SESSION['GEOEXT']['maxx']));
$yGeo = $_SESSION['GEOEXT']['maxy'] - (($yPixel/$_SESSION['mapheight'])
* ($_SESSION['GEOEXT']['maxy']-$_SESSION['GEOEXT']['miny']));
$pt = ms_newPointObj();
$pt->setXY($xGeo, $yGeo);
// proj
$mapProjStr = $map->getProjection();
$layerProjStr = $layer->getProjection();
if ($mapProjStr && $layerProjStr && $mapProjStr != $layerProjStr) {
$mapProjObj = ms_newprojectionobj($mapProjStr);
$layerProjObj = ms_newprojectionobj($layerProjStr);
$pt->project($mapProjObj, $layerProjObj);
}
// set map extent and size:
$map->setExtent($_SESSION['GEOEXT']['minx'],
$_SESSION['GEOEXT']['miny'], $_SESSION['GEOEXT']['maxx'],
$_SESSION['GEOEXT']['maxy']);
$map->setSize($_SESSION['mapwidth'], $_SESSION['mapheight']);
$map->preparequery();
// Use '@' to avoid warning if query found nothing
@$layer->queryByPoint($pt, MS_SINGLE, -1);
$pt->free();
// read results:
if ($layer->getNumResults() == 1) {
$res = $layer->getResult(0);
$layer->open();
$shape = layer->getFeature($res->shapeindex, $res->tileindex);
// use $shape->values to read what you want
// ......
$layer->close();
}
Medve Zsolt a écrit :
> thanks for the answer, but: how ?
>
> "You have to send them to your PHP file, convert the click in map unit,
> use PHP mapscript to project coordinates, search the shapes, and call
> tour SOAP service. "
> This is the part what i cant do :)
>
> Send the mouse click coordinates to the php file ( witch contains the
> SOAP call),converting clicking,search the shape..
> The SOAP call is ready to use,but it expect the id atribute form the
> shape file..How can i pass it to them?
>
> 2010.03.22. 11:21 keltezéssel, Thomas Raffin írta:
>
>> Hi
>>
>> Medve Zsolt a écrit :
>>
>>> Hy!
>>>
>>> I would like to ask some qouestion about p.mapper logics.
>>> 1. I see that the line in js_config.php :
>>> {tool:'identify', name:'Identify'}, is for the button to
>>> apear in Tools. But where is the code of the image. Where and how it
>>> will get the icon for the toolbar? I cant follow the logic. ( I need
>>> this because if i want a custom functionality to pmapper, i want a
>>> custom icon too, but if i write a button line to the js_config.php
>>> just the text appears only.)
>>>
>>>
>> The "tool" indicates image name.
>> In config/xxxxx/js_config.php you can specify the images theme and
>> extension to use :
>> "PM.buttonsDefault = {
>> toolbarid:'toolBar',
>> options: {orientation:'v',
>> css:{height:'auto'},
>> theme:'theme2',
>> imagetype:'gif'
>> },
>> ........"
>>
>> Here "theme2" and "gif". The buttons images are calculated in
>> pmapper/javascript/src/pm.uielements.js: image url =
>> 'images/buttons/'+ options.theme + '/' + tool + '_off.' +
>> options.imagetype.
>> For instance: pmapper/images/buttons/theme2/yourtool_off.gif
>>
>>
>>> 2. How p.mapper gets the id of a shape? I mean if i have a
>>> something.shp file and have 1 or more shapes in it, how can i use for
>>> my own functionality the ID of a shape?
>>> I need to pass this ID to a Soap Call.
>>>
>>>
>> I don't really know what you want to do.
>>
>> If you want to click on the map, find the shapes, call a SOAP service,
>> you have to know PHP mapscript
>> (http://mapserver.org/mapscript/index.html)
>>
>> There are js functions ending with "_start(imgxy)". (see
>> http://svn.pmapper.net/trac/wiki/FaqCustomizations#AddingaplugintotheGUI
>> to know how to integrate your plugin). It will give you the xy
>> coordinates (screen unit) of your click. You have to send them to your
>> PHP file, convert the click in map unit, use PHP mapscript to project
>> coordinates, search the shapes, and call tour SOAP service.
>>
>>
>>> Can someone help me a little bit more? I would be gratefull.
>>>
>>> Thanks,
>>> Zsolt
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>>
>>> Download Intel® Parallel Studio Eval
>>> Try the new software tools for yourself. Speed compiling, find bugs
>>> proactively, and fine-tune applications for parallel performance.
>>> See why Intel Parallel Studio got high marks during beta.
>>> http://p.sf.net/sfu/intel-sw-dev
>>> _______________________________________________
>>> pmapper-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/pmapper-users
>>>
>>>
>>>
>>>
>>>
>>>
>
>
> ------------------------------------------------------------------------------
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> pmapper-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/pmapper-users
>
>
>
>
>
>
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
pmapper-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pmapper-users