Помогите с ajax запросом.

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
dimas4
Интересующийся
Сообщения: 17
Зарегистрирован: 16 апр 2009, 18:28
Репутация: 0

Помогите с ajax запросом.

Сообщение dimas4 »

Здравствуйте! Делаю карту с использованием MapServer+OpenLayer+PostGis, возникла такая проблема, хочу чтобы по нажатию на объект, например дом, появлялась информация о нем (popup). Cобытие которое возвращает координаты точки клика я нашел в примерах OL.(http://www.openlayers.org/dev/examples/click.html) С серверной частью мне помог iron.
Серверная часть:

Код: Выделить всё

<?
$lat = $_GET['lat'];
$lon = $_GET['lon'];
$id1=0; 
$conn_string = "host=localhost port=5432 dbname=street user=postgres password=pass";
$dbconn = pg_connect($conn_string) or die('Could not connect: ' . pg_last_error());
$pgquery = "SELECT gid, Имя ";
$pgquery .= "FROM point ";
$pgquery .= "WHERE ST_Within(PointFromText('POINT(".$lon." ".$lat.")'),the_geom)";
$result = pg_query($pgquery) or die('Query failed: ' . pg_last_error());
$id1=0;
while( $rez=pg_fetch_Object($result) )
{
$id1=$rez->Имя;
}
pg_close($dbconn);
// вывод результатов
print( "{ success: true, x:'{$lat}', y:'{$lon}',id1:'{$id1}' }" );
return $id1;
?>
Помогите составить ajax запрос, который смог отправить на сервер координаты, соответственно сервер возвратил название дома, которое отобразилось в popup.
Вот код клиента:

Код: Выделить всё

<script type="text/javascript">
	var lon = 400;
        var lat = 400;
        var zoom = 1;
        var map, layer;
	OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.trigger
                        }, this.handlerOptions
                    );
                }, 
                trigger: function(e) {
                    var lonlat = map.getLonLatFromViewPortPx(e.xy);
                                    }
            });
       function init(){
			options = {
				maxExtent: new OpenLayers.Bounds(-15000, -19200, 26200, 16000), 
				 resolutions: [40,20,15,7.5,5,3,1,0.55,0.2,0.1,0.01]
			};
            map = new OpenLayers.Map( 'map' , options);
            layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "/cgi-bin/mapserv.exe?map=/ms4w/apps/example/street.map&", {layers: 'veget'} , {singleTile: true, ratio: 1});
	                 map.addLayer(layer);
			map.addControl( new OpenLayers.Control.LayerSwitcher() );
			map.addControl(new OpenLayers.Control.MousePosition());
			map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
			var click = new OpenLayers.Control.Click();
			map.addControl(click);
			click.activate();
       }
    </script>
Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Помогите с ajax запросом.

Сообщение dobeer »

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя