Я занимаюсь разработкой веб-приложения для iPhone - PullRequest
0 голосов
/ 28 июня 2011

Поэтому, когда я что-то набираю в строке поиска моего приложения, оно должно отправить мою широту и долготу на веб-сервер, чтобы он мог вернуть меня в ближайшее место, где я могу найти искомый тег. Я новичок в Titanium, так что кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Если вы используете TiStudio вместо TiDeveloper, вы можете начать с примера проекта GPS.Он входит в комплект поставки, поэтому просто запустите его и используйте этот код в качестве рабочей копии для изучения.

0 голосов
/ 28 июня 2011

Вы в основном отправляете запрос через HTTP на ваш веб-сервис и используете результат (возьмите функцию из @Muhammad Zeeshan, чтобы получить долготу / широту):

var xhr = Titanium.Network.createHTTPClient();
// write file on success
xhr.onload = function(){
    var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,this.apiFile);
    f.write(this.responseData);
};
// error handling
xhr.onerror = function(){  
    Ti.API.error(this.status + ' - ' + this.statusText);  
};
// open the client (and test HTTPS)
xhr.open('GET','http://example.com/api/?longitude=' + longitude + '&latitude=' + latitude);
// send the data
xhr.send();
// read file and return json
var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, this.apiFile);
var contents = f.read();
var yourJson = JSON.parse(contents);

На стороне сервера вам нужен веб-сервисдля общения (вы не указали язык, который используете на сервере), но я предполагаю, что вы получаете данные через базу данных MySQL (другие должны быть похожими):

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($latitude * PI() / 180) * COS(lat * PI() / 180) * COS(($longitude – lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS `distance` FROM `locations` HAVING `distance`<=’10′ ORDER BY `distance` ASC

Добавить дополнительные предложения WHERE кфильтр по тегу.

...