[OpenLayers-Users] GetFeature VS MapScript generated csv file

Alexandre Dube adube at mapgears.com
Mon Aug 18 09:09:49 EDT 2008


Hi Eric,

    My service only creates a file.  When I try to read 
response.responseText, it's empty.  I could just read the file on the 
file system but it seems to me that it's the wrong way of doing it.  I 
would prefer the standard way of returning the content.  Can you give me 
a hint on how to do it ?

    Many thanks,

Alexandre

Eric Lemoine wrote:
> Hi. What do you mean when you say your php service does return
> anything and just create a file? Do you mean your service just creates
> a file on the file system? Really it should send the text in the
> response, so that you can most probably replace OpenLayers.Format.GML
> with OpenLayers.Format.Text and i'll just work. I'm hoping i've
> understood your question correctly. Eric
>
> 2008/8/15, Alexandre Dube <adube at mapgears.com>:
>   
>> Hi all,
>>
>>     In my application, I dynamically build a <select> element with
>> cities as options using a GetFeature request and reading from GML format
>> to generate it.
>>
>>     It works perfectly but is kinda slow because of the size of the GML
>> format.  A dev and friend of mine suggested that I should generate my
>> own text file using phpMapScript.  It was quite easy to do and works
>> perfectly.  It generates a file which uses the same format as the
>> OpenLayers.Format.Text ( tab separated values, coordinates and title as
>> city name ).
>>
>>     Now I want to replace the GML format by Text format but don't really
>> understand how this must be done.
>>
>>     I tried this :
>>         OpenLayers.loadURL("/bdga/csvCityBuilder.php", '', this, setCities);
>>     and the file is created...  but my php file is not a standard
>> request.  It doesn't return anything, it only creates a file.
>>
>>     I could load the generated file with standard javascript function,
>> but I was wondering if there is already something in OpenLayers I could
>> use, like the following ( which obviously isn't working ).  Maybe I'm
>> missing something.
>>         oText = new OpenLayers.Format.Text();
>>         oFeatures = oText.read(response.responseText);
>>
>>     Bellow is the GML version of it which works fine.  Any help would be
>> appreciated.
>>
>> // a GetFeature on layer BDGA_HABIT_P_POINT to get all cities and their
>> // coordinates.  See setCites function for more info.
>> sUrl = sMSURL;
>> sUrl += "?map=";
>> sUrl += sBDGAMapPath;
>> sUrl += "&service=WFS&version=1.0.0&request=GetFeature";
>> sUrl += "&TYPENAME=BDGA_HABIT_P_POINT";
>> OpenLayers.loadURL(sUrl, '', this, setCities);
>>
>> // add one option per city to a select html element with value equal to
>> // the city coordinates ( longitude, latitude )
>> function setCities(response) {
>>     oGML =  new OpenLayers.Format.GML();
>>     oFeatures = oGML.read(response.responseText);
>>
>>     var aCities = new Array();
>>
>>     // put the results in an array first to be able to sort it
>>     for (var key in oFeatures){
>>         var szValue = "";
>>         szValue += oFeatures[key].geometry.x;
>>         szValue += ",";
>>         szValue += oFeatures[key].geometry.y
>>
>>         aCities[key] = {
>>           cityName: oFeatures[key].attributes['HAP_NM_TOP'],
>>           lonlat: szValue
>>         };
>>     }
>>
>>     // sort the array by city name
>>     aCities.sort(sortByCityName);
>>
>>     // create on option per city and add it to the select element
>>     var oSelect=document.getElementById("zoomToCity");
>>     for (i=0; i<aCities.length; i++){
>>         var oOption = document.createElement('option');
>>         oOption.text=aCities[i]['cityName'];
>>         oOption.value=aCities[i]['lonlat'];
>>         try
>>         {
>>             oSelect.add(oOption,null); // standards compliant
>>         }
>>         catch(ex)
>>         {
>>             oSelect.add(oOption); // IE only
>>         }
>>     }
>>
>>     // The list has finished to be created, so enable it and remove the
>> first
>>     // option that contained the "please wait" msg
>>     oSelect.disabled = "";
>>     oSelect.remove(0);
>> }
>>
>> // returns the aCities array sorted by cityName
>> function sortByCityName(a, b) {
>>     var x = a.cityName.toLowerCase();
>>     var y = b.cityName.toLowerCase();
>>     return ((x < y) ? -1 : ((x > y) ? 1 : 0));
>> }
>>
>>
>> --
>> Alexandre Dubé
>> Mapgears
>> www.mapgears.com
>>
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>
>>     


-- 
Alexandre Dubé
Mapgears
www.mapgears.com




More information about the Users mailing list