tilecache и wmsGetFeatureinfo

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
daler
Интересующийся
Сообщения: 39
Зарегистрирован: 14 ноя 2011, 17:15
Репутация: 0
Контактная информация:

tilecache и wmsGetFeatureinfo

Сообщение daler »

Настройки tilecache

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

type=WMS
url=http://plazoom.ru/cgi-bin/mapserv?MAP=/var/www/daler/data/www/plazoom.ru/ufakarta/ufa_all.map&
extension=png
layers=granicy_region,rayeny_region_ontitle,teritoria_kvartalov_region,sadovye_uchastki_region,zelonye_lesa_region,vadaem,kladbisha_region,mosty_and_truby_region,reki_region_notitle,mosty_and_truby_polyline,shosse_bottom_polyline,avtotrassy2_bottom_polyline,avtotrassy_polyline_12,avtotrassy2_polyline,avtotrassy_polyline567,avtotrassy_polyline_34,avtotrassy_bottom_k_34,avtotrassy_bottom_k_12,avtotrassy_bottom_k_567,strit_notitle,shosse_polyline4567,strit_big_podlojka,strit_big_osnova,stroeneie_region_notitle2,stroeneie_uchebki_notitle,stroeneie_region5,stroeneie_region6,stroeneie_region7,avtostayanki_region,sport_stroenie_region,rynki_region,parki_region,strit3,strit_title_other,strit_big_title,stroeneie_uchebki5,stroeneie_uchebki6,stroeneie_uchebki7
srs=EPSG:900913
bbox=-18673.953, -31136.298, 21526.319, 24312.353 
size=256,256 
resolutions=74.20494699646643, 30.3886925795053, 12.36749116607774, 4.946996466431095, 2.100353356890459, 0.8614840989399293, 0.353356890459364,226.093198,92.590548,37.682200,15.072880,6.399514,2.624834,1.076634
metaTile=true
metaSize=5,5
metaBuffer=100
extent_type = loose
настройки ol

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

	var lon = 3000;
	var lat = 0;
	var zoom = 4;
	var map, layer;

function init(zoom_level, nomer, searchGo)
{
   document.getElementById('map').innerHTML  = '';
   if(map)
   {
  // 	   	map.destroy();
   //		map = null;
   }
if (nomer && nomer > 0 && nomer <= zoom_level)
{

		OpenLayers.DOTS_PER_INCH = 72;

	    var options = {


	//	maxScale: 1000,
		//minScale: 210000,
		numZoomLevels: zoom_level,
		panEnabled: true,

		minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),

		maxExtent: new OpenLayers.Bounds(-18673.953, -31136.298, 21526.319, 24312.353),
		projection: "EPSG:900913",
	controls: [new OpenLayers.Control.MouseDefaults(),


          ],
		units: 'm',		
resolutions: [74.20494699646643, 30.3886925795053, 12.36749116607774, 4.946996466431095, 2.100353356890459, 0.8614840989399293, 0.353356890459364],

        };

		map = new OpenLayers.Map( 'map' , options);

		map.addControl(new OpenLayers.Control.PanZoomBar());

           map.addControl(new OpenLayers.Control.MousePosition());

layer = new OpenLayers.Layer.WMS( "WMS", "/cgi-bin/tilecache.cgi?", {layers: 'basic', format: 'image/png'} );



         

	var popup = null;
info = new OpenLayers.Control.WMSGetFeatureInfo({
            url: 'http://plazoom.ru/cgi-bin/tilecache.cgi?',
            title: 'Описание объекта',
			 infoFormat: 'application/vnd.ogc.gml',
			 layers: [layer],
			    vendorParams: {map: '/var/www/daler/data/www/plazoom.ru/ufakarta/ufa_all.map'},
                output: "object",
				 queryVisible: true,
            eventListeners: {
                getfeatureinfo: function(event) {
                 if (!event.text.match(/<body>\s*<\/body>/)) //проверка: ответил ли сервер на запрос
               {
                  if (popup) //проверка: существуют ли popup'ы на карте, если да, то закрываем
                  {
                     popup.destroy();
                     popup = null;
                  }
                  popup = new OpenLayers.Popup.FramedCloud(
                                   "chicken",
                                   map.getLonLatFromPixel(event.xy),
                                   null,
                                   event.text,
                                   null,
                                   true
                                   );
                  map.addPopup(popup);
               }
                }
         }
      });

        map.addControl(info);
        info.activate();
       

	//////////////////////////////////////

	if(searchGo==1)
	{
		if(markers)
	   	{
	   	   	markers.destroy();
	  		markers = null;
	   	}
	    var markers = new OpenLayers.Layer.Markers( "Markers" );
		var req = new JsHttpRequest();
	     req.onreadystatechange = function() {
	         if (req.readyState == 4) {
	           listObjects = req.responseJS.listObjects;
	           document.getElementById('map_1').innerHTML = req.responseText;

	           for (opt in listObjects){
	           //	document.getElementById('map_1').innerHTML +=  opt+': '+listObjects[opt].x+', '+listObjects[opt].x+'<br />';

	            var x = listObjects[opt].x; var y= listObjects[opt].y; var strit =  listObjects[opt].address;

	             var size = new OpenLayers.Size(21,25);
	    		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
	    		var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);


	           	var feature = new OpenLayers.Feature(markers, new OpenLayers.LonLat( x,y));
			    feature.closeBox = true;
			    feature.popupClass = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {minSize: new OpenLayers.Size(300, 180) } );
			    feature.data.popupContentHTML = strit;
			    feature.data.overflow = "hidden";


			    var marker = new OpenLayers.Marker(new OpenLayers.LonLat(x,y), icon);
			    marker.feature = feature;

			    var markerClick = function(evt) {
				    if (this.popup) //проверка: существуют ли popup'ы на карте, если да, то закрываем
		            {
		                     this.popup.destroy();
		                     this.popup = null;
		            }
			        if (this.popup == null) {
			            this.popup = this.createPopup(this.closeBox);
			            map.addPopup(this.popup);
			            this.popup.show();
			        } else {
			            this.popup.toggle();
			        }
			        OpenLayers.Event.stop(evt);
			    };
			    marker.events.register("mousedown", feature, markerClick);
			    markers.addMarker(marker);
				}

	         }
	     }
	     req.open(null, 'http://plazoom.ru/index.php?option=com_content&controller=content&task=getSearchResult', true);
	     req.send( { q: document.getElementById('minisearchform') } );
	     map.addLayer(markers);
     }

	map.addLayer(layer);

	map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
	map.zoomToMaxExtent();
	map.zoomTo(nomer - 1);

}


}


init(7, 2,0);

при тыкание на карту выводит такую информацию: An error occurred: Current x value -10425.407106 is too far from tile corner x -18673.953000
как решить данную проблему?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: tilecache и wmsGetFeatureinfo

Сообщение Denis Rykov »

Попробуйте изменить конфиг tilecache:

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

[fields]
type=WMSLayer
url=***
layers=***
extension=png
size=256,256
srs=EPSG:900913
extent_type=loose
spherical_mercator=true
metaTile=true
Spatial is now, more than ever, just another column- The Geometry Column.
daler
Интересующийся
Сообщения: 39
Зарегистрирован: 14 ноя 2011, 17:15
Репутация: 0
Контактная информация:

Re: tilecache и wmsGetFeatureinfo

Сообщение daler »

Выдает

An error occurred: can't find resolution index for 30.388693. Available resolutions are:
[156543.03390000001, 78271.516950000005, 39135.758475000002, 19567.879237500001, 9783.9396187500006, 4891.9698093750003, 2445.9849046875001, 1222.9924523437501, 611.49622617187504, 305.74811308593752, 152.87405654296876, 76.43702827148438, 38.21851413574219, 19.109257067871095, 9.5546285339355475, 4.7773142669677737, 2.3886571334838869, 1.1943285667419434, 0.59716428337097172, 0.29858214168548586]
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: tilecache и wmsGetFeatureinfo

Сообщение Denis Rykov »

Пропишите этот массив разрешений в свойствах слоя serverResolutions и resolutions.
Spatial is now, more than ever, just another column- The Geometry Column.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: tilecache и wmsGetFeatureinfo

Сообщение Denis Rykov »

Получилось что-нибудь?
Spatial is now, more than ever, just another column- The Geometry Column.
daler
Интересующийся
Сообщения: 39
Зарегистрирован: 14 ноя 2011, 17:15
Репутация: 0
Контактная информация:

Re: tilecache и wmsGetFeatureinfo

Сообщение daler »

сделал немного по другому, потому что все так же розовые квадраты, решил сделать на php примере. Только вышел 1 косяк
Ответить

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

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

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