Ten dokument nie wyjaśnia wszystkich wątpliwości? Szczegółowa dokumentacja techniczna API DoCelu.pl
Sprawdź toczące się dyskusje na Forum API DoCelu.pl
Ten dokument nie wyjaśnia wszystkich wątpliwości? Szczegółowa dokumentacja techniczna API DoCelu.pl
Sprawdź toczące się dyskusje na Forum API DoCelu.pl
API pozwala wyszukiwać POI w określonym promieniu od zadanego punktu. Najprościej wyszukiwać POI z poziomu mapy klikając prawym przyciskiem myszy w miejscu, gdzie chcemy szukać i wybierajac opcję "Szukaj punktów w okolicy".
Opcja ta jest dostępna jeśli obiekt konfiguracyjny config.features.searchInRange ma ustawioną wartość true (jest do wartość domyślna).
Po wybraniu odpowiednich opcji wyszukiwania odnalezione POI zostaną wyświetlone na mapie.
Wyszukiwanie możemy zostać uruchomione również z poziomu javascriptu:
Funkcja wyzwala wyszukiwanie POI w okolicy.
searchCriteria = {
//nazwa wyszukiwanego obiektu
name : 'Wirtualna Polska',
//identyfikatory kategorii w których szukamy
categories : [ 5 ],
//długość geograficzna punktu, wokół którego szukamy
lon: 20,
//szerokość geograficzna punktu, wokół którego szukamy
lat: 50,
//promień wyszukiwania
//-1 jeśli chcemy znaleźć tylko 1 najbliższy punkt
radius: 2,
//numer strony wyników wyszukiwania - liczony od zera
page: 0,
//liczba wyników wyszukiwania (na stronę)
results: 10
};
Przykładowo wywołane zostanie wyszukiwanie z następującymi parametrami:
var searchCriteria = {
name : 'Wirtualna Polska',
categories : [],
lon: 18.608028,
lat: 54.369991,
radius: 2,
page: 0,
results: 10
};
DoCelu.searchPoiWithinRadius(searchCriteria);
Formularz wyszukiwania dostępny z menu kontekstowego mapy nie obsługuje stronicowania. Można go natomiast zsynchronizować z odpowiednimi formularzami html'owymi.
Pobiera kryteria wyszukiwania w okolicy wybrane przez użytkownika w formularzu na mapie. Zwraca opisany wyżej obiekt searchCriteria.
W celu przechwycenia wyników wyszukiwania POI i prezentacji ich w html'u należy zdefiniować funkcję typu callBack, która przyjmuje 2 parametry:
retStatus = {
failed: false, //wartość boolowska, czy pobranie danych zawiodło
errDesc: null, //ciąg znaków, opis ewntualnego błędu
exception: null //ewentualny obiekt wyjątku XMLHttpRequest
}
response = {
amount: 2, //liczba wszystkich POI pasujacych do wyników wyszukiwania
pois: [ ... ] //tablica ze stroną wyszukanych POI
}
Zdefiniujemy funkcję callBack i osadzimy mapę z odpowiednią konfiguracją:
function searchPoiWithinRadiusCallBack(retStatus, response) {
if (retStatus.failed) {
//coś się nie udało
} else {
$resultDiv = jQuery('#resultDiv').html('<ol></ol>');
for (var i in response.pois) {
var poi = response.pois[i];
$resultDiv.find('ol').append('<li>' + poi.name + ' - ' + poi.locality + ', ' + poi.road + ' ' + poi.roadNo + '</li>');
}
//jeśli nie chcemy, by wyniki pokazane zostały na mapie zwracamy false
//return false;
}
}
Przy wyszukiwaniu w promieniu i najbliższego punktu, miejsce od którego wyszukaliśmy zostało oznaczone flagą. Po najechaniu na nią kursorem myszy pojawia się "x" którym możemy usunąć wyniki wyszukiwania. Jeśli w tym samym czasie mają zostać usunięte wyniki wyszukiwania z html'a to musi zostać zdefiniowana bezparametrowa funkcja callBack:
function clearSearchLayerCallBack() {
jQuery('#resultDiv').html('');
}
var config = {
"callBacks" : {
"searchPoiWithinRadius" : searchPoiWithinRadiusCallBack,
"clearSearchLayer" : clearSearchLayerCallBack
}
};
DoCelu.loadMap(document.getElementById('map'), config);
Przykładowy kod i efekt jego zastosowania:
<div id="map" style="width:800px; height:600px; "></div>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function() {
function searchPoiWithinRadiusCallBack(retStatus, response) {
if (retStatus.failed) {
//coś się nie udało
} else {
$resultDiv = jQuery('#resultDiv').html("<ol></ol>");
for (var i in response.pois) {
var poi = response.pois[i];
$resultDiv.find('ol').append("<li>" + poi.name + ' - ' + poi.locality + ', ' + poi.road + ' ' + poi.roadNo + "</li>");
}
}
}
function clearSearchLayerCallBack() {
jQuery('#resultDiv').html('');
}
var config = {
"callBacks" : {
"searchPoiWithinRadius" : searchPoiWithinRadiusCallBack,
"clearSearchLayer" : clearSearchLayerCallBack
}
};
DoCelu.loadMap(document.getElementById('map'), config, function() {
var view = {
"lon" : 19.611698,
"lat" : 52.370658,
"zoom" : 5
};
DoCelu.setMapView(view);
});
jQuery('#test').mousedown(function() {
var searchCriteria = {
name : 'Wirtualna Polska',
categories : [],
lon: 18.608028,
lat: 54.369991,
radius: 2,
page: 0,
results: 10
};
DoCelu.searchPoiWithinRadius(searchCriteria);
});
});
//]]>
</script>
Ten dokument nie wyjaśnia wszystkich wątpliwości? Szczegółowa dokumentacja techniczna API DoCelu.pl
Sprawdź toczące się dyskusje na Forum API DoCelu.pl
Ten materiał nie ma jeszcze żadnej opinii. Twoja może być pierwsza!