Hi,
Thank you for sharing the solution. I did not spot that and it is not in the documentation 
Here is some my contribution for this matter. Maybe I will write a wiki article based on this, but until then, here is a unpolished solution to obtain and sort nearby landmarks.'
Code:
window.onload = init;
var landmarksSo = null;
var locationSo=null;
//hard coded please change
var currentPos = new Object();
currentPos.Longitude = 23.861260972;
currentPos.Latitude = 61.447976734;
function init()
{
try {
landmarkSo = device.getServiceObject("Service.Landmarks", "IDataSource");
locationSo = device.getServiceObject("Service.Location", "ILocation");
//position, distance in meters
getLandmarks(currentPos,100000000);
}
catch (e) {
alert("So init: "+ e.toString());
}
}
function calclulateDistance(currentPos, landmarkPos){
var criteria = new Object();
criteria.MathRequest = "FindDistance";
criteria.DistanceParamSource = currentPos;
criteria.DistanceParamDestination = landmarkPos;
//altitude must be present altough it does not affect the result
criteria.DistanceParamSource.Altitude=0;
criteria.DistanceParamDestination.Altitude=0;
result = locationSo.ILocation.Calculate(criteria);
if (result.ErrorCode != 0) {
writeLine(result.ErrorCode +": "+result.ErrorMessage);
return -1;
}
else {
return result.ReturnValue;
}
}
function distanceToHumanReadable(distance){
var dipDist="";
if (distance > 1000) {
distance = Math.round(distance / 100)/10;
dipDist = distance + " km";
}
else {
dipDist = Math.round(distance) + " m";
}
return dipDist;
}
function sortLandmarks(a, b) {
if(a[1]< b[1])
return -1;
if(a[1] > b[1])
return 1;
//a[1] == b[1] sort alphabetically
var nameA=a[0].LandmarkName.toLowerCase();
var nameB=b[0].LandmarkName.toLowerCase();
if(nameA < nameB)
return -1;
if(nameA > nameB)
return 1;
return 0;
}
function getLandmarks(position, maxDistance){
try {
var criteria = new Object();
criteria.Type = "Landmark";
var filter = new Object();
criteria.Filter = filter;
criteria.Filter.MaximumMatches = 10;
criteria.Filter.MaximumDistance = maxDistance; //meters
criteria.Filter.CoverageRadiusOption = true;
criteria.Filter.LandmarkPosition = position;
var result = landmarkSo.IDataSource.GetList(criteria,landmarksGot);
writeLine("listLandmarks "+ result.TransactionID +" "+ result.ErrorCode +" "+result.ErrorMessage);
}
catch (e) {
var error = e.toString();
alert("Error getLandmarks: "+error);
}
}
function landmarksGot(transactionID, eventCode, result){
switch(eventCode) {
case 2:
{
writeLine("List of landmarks");
var list = result.ReturnValue;
var landmark = null;
var landmarks= new Array();
var i=0;
while ((landmark = list.getNext()) != undefined) {
var distance = calclulateDistance(currentPos,landmark.LandmarkPosition);
landmarks[i]= new Array();
landmarks[i][0] = landmark;
landmarks[i][1] = distance;
i++;
}
writeLine("sortLandmarks ");
landmarks.sort(sortLandmarks);
for(lm in landmarks){
writeLine(landmarks[lm][0].LandmarkName+" dist "+distanceToHumanReadable(landmarks[lm][1]));
}
}
break;
case 4:
//show loader etc..
writeLine("loading landmarks");
break;
case 9:
writeLine("Error while retrieving landmarks: "+ result.ErrorMessage + " code:"+ result.ErrorCode);
break;
default:
alert("oops something went wrong"+ eventCode);
}
}
function writeLine(line){
document.getElementById("stdout").innerHTML += line+"<br>";
}
Br,
Ilkka - FN