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
W tym artykule zostało opisane jak umożliwić użytkownikom współtworzenie bazy POI.
Aby osiągnąć ten efekt będziemy musieli wykonać następujące czynności:
Użytkownik zgłaszający publikacje, musi być zalogowany i posiadać aktywne konto. Więcej o konfiguracji i obsłudze logowania użytkowników w artykule Obsługa logowania użytkownika.
Strona WWW powinna zwracać dane o POI'ach w okeślonym formacie. W parametrach Requestu (GET) API będzie przekazywać informacje o danych z formularza. Oprócz tego przekazany zostanie parametr callback.
Przykładowy Request będzie miał postać:
http://moj.host.pl/publishPoi.php?callback=jsonp1241692075248&poiId=&pubType=req_add&name=Moj +punkt&categoryId=2716&locality=Gdansk&road=Traugutta&roadNo= 115&postalCode=80-000&contact=(58)5555555&lon=17.314453125&lat=52.5897007687178 &description=&publisherContact=jkowalski%40wp.pl&publisherName=Jan+Kowalski&workHoursMonFriFrom= 9&workHoursMonFriTo=17&cardAccept=true&annotation=To+sa+dodatkowe+informacje
Odpowiedź strony WWW powinna mieć następującą postać, zgodną z formatem ActionResponse:
//nazwa z parametru "callback"
jsonp1241692075248({
//czy operacja się powiodła
"result":1,
//opcjonalnie zwracane dane
"value":{
"info":"Operacja zakończona powodzeniem"
},
//ewentualne komunikaty błędów
"error":[]
});
W obiekcie konfiguracyjnym API musimy dopisać namiary na wcześniej utworzoną stronę:
var paths = {
//ścieżka do danych zalogowanego użytkownika
"loggedUserData" : {
"url" : "http://moj.host.pl/loggedUserData.php"
},
//konfiguracja połączenia ze skryptem obsługującym zgłoszenia użytkowników
"poiPublish" : {
//adres pod którym dostępny jest skrypt
"url" : "http://moj.host.pl/publishPoi.php",
//nazwy parametrów w requestcie
"paramNames" : {
//identyfikator POIa - w przypadku modyfikacji lub usunięcia
"id" : "poiId",
//typ publikacji: req_add, req_mod, req_del
"type" : "pubType",
//Nazwa POIa
"name" : "name",
//Identyfikator kategorii, do której należy POI
"category_id" : "categoryId",
//nazwa miejscowości
"locality" : "locality",
//nazwa ulicy
"road" : "road",
//numer budynku
"roadNo" : "roadNo",
//kod pocztowy
"postalCode" : "postalCode",
//dane kontaktowe POIa
"contact" : "contact",
//dł. geograficzna
"lon" : "lon",
//szer. geograficzna
"lat" : "lat",
//opis POIa
"description" : "description",
//dane kontaktowe użytkownika
"publisherContact" : "publisherContact",
//nazwa użytkownika
"publisherName" : "publisherName",
//godzina otwarcia w dni powszednie
"workHoursMonFriFrom" : "workHoursMonFriFrom",
//godzina zamkniecia w dni powszednie
"workHoursMonFriTo" : "workHoursMonFriTo",
//godzina otwarcia w soboty
"workHoursSatFrom" : "workHoursSatFrom",
//godzina zamkniecia w soboty
"workHoursSatTo" : "workHoursSatTo",
//godzina otwarcia w niedziele
"workHoursSunFrom" : "workHoursSunFrom",
//godzina zamkniecia w niedziele
"workHoursSunTo" : "workHoursSunTo",
//czy punkt akceptuje karty płatnicze
"cardAccept" : "cardAccept",
//komentarz dla moderatora
"annotation" : "annotation"
}
}
};
Kolejnym etapem jest włączenie skonfigurowanej funkcjonalności. Do obiektu konfiguracyjnego dopiszemy:
var features = {
//włączenie opcji:
//dodawania nowego POI
"addPoi" : true,
//edycji istniejącego POI
"editPoi" : true,
//usuwania POI
"deletePoi" : true
};
var config = {
"features" : features,
"paths" : paths
};
DoCelu.loadMap(document.getElementById('map'), config);
Wyświetlianie formularza na mapie:
Wyświetla formularz dodawania punktu. Dane formularza wypełnione są zgodnie z zawartością obiektu POI.
Możemy utworzyć własny formularz i z poziomu javascriptu wywołać funkcję:
Wysyła formularz z publikacją danych POI. Nie sprawdza czy użytkownik jest zalogowany.
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() {
var paths = {
"loggedUserData" : {
"url" : "/loggedUserData.mock.json"
},
"poiPublish" : {
"url" : "/actionResponse.mock.json",
"paramNames" : {
"id" : "poiId",
"type" : "pubType",
"name" : "name",
"categoryId" : "categoryId",
"locality" : "locality",
"road" : "road",
"roadNo" : "roadNo",
"postalCode" : "postalCode",
"contact" : "contact",
"lon" : "lon",
"lat" : "lat",
"description" : "description",
"publisherContact" : "publisherContact",
"publisherName" : "publisherName",
"workHoursMonFriFrom" : "workHoursMonFriFrom",
"workHoursMonFriTo" : "workHoursMonFriTo",
"workHoursSatFrom" : "workHoursSatFrom",
"workHoursSatTo" : "workHoursSatTo",
"workHoursSunFrom" : "workHoursSunFrom",
"workHoursSunTo" : "workHoursSunTo",
"cardAccept" : "cardAccept",
"annotation" : "annotation"
}
}
};
var features = {
//włączenie opcji:
//dodawania nowego POI
"addPoi" : true,
//edycji istniejącego POI
"editPoi" : true,
//usuwania POI
"deletePoi" : true
};
var config = {
"features" : features,
"paths" : paths
};
DoCelu.loadMap(document.getElementById('map'), config);
});
//]]>
</script>
Uzyskany efekt:
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!