Cordova: загрузить изображение и местоположение в базу данных и загрузить ближайшие изображения - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь создать приложение с помощью Cordova.С приложением вы должны делать снимки, эти снимки должны быть загружены в базу данных вместе с местом, где снимок сделан.Приложение по умолчанию показывает номер топора из ближайших фотографий, снятых в вашем регионе.Ниже я выкладываю код JavaScript, который у меня есть сейчас, большая часть кода принадлежит Cordova self.Лучше ли изменить этот код или начать заново?

Теперь я могу получить доступ к камере и сделать снимок, но как мне загрузить это изображение вместе с местоположением в базу данных?

Икак можно загрузить ближайшие картинки из базы?

var Latitude = undefined;
var Longitude = undefined;

window.onload = function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady(){
    navigator.notification.alert("ready");
    document.getElementById("camera").addEventListener 
        ("click", cameraTakePicture); 
}

function cameraTakePicture() { 
    navigator.camera.getPicture(onSuccess, onFail, {  
       quality: 50, 
       destinationType: Camera.DestinationType.DATA_URL 
    });  

  function onSuccess(imageData, imageURI) { 
     var image = document.getElementById('myImage'); 
     image.src = "data:image/jpeg;base64," + imageData;
     getLocation();
     navigator.notification.alert(image.src);
  }  

  function onFail(message) { 
     alert('Failed because: ' + message); 
  } 
 }

 function getLocation() {
    navigator.notification.alert("start locatie");
    navigator.geolocation.getCurrentPosition(onPicturesSuccess, onPicturesError, { enableHighAccuracy: true });
 }

var onPicturesSuccess = function (position) {

  Latitude = position.coords.latitude;
  Longitude = position.coords.longitude;

  getPictures(Latitude, Longitude);
}

function getPictures(latitude, longitude) {
  //Load pictures which are the nearest
}

var onPicturesWatchSuccess = function (position) {

   var updatedLatitude = position.coords.latitude;
   var updatedLongitude = position.coords.longitude;

   if (updatedLatitude != Latitude && updatedLongitude != Longitude) {

     Latitude = updatedLatitude;
     Longitude = updatedLongitude;

     getPictures(updatedLatitude, updatedLongitude);
   }
}

// Error callback

function onPicturesError(error) {

   console.log('code: ' + error.code + '\n' +
       'message: ' + error.message + '\n');
}

// Watch your changing position

function watchPicturePosition() {

   return navigator.geolocation.watchPosition
   (onPicturesWatchSuccess, onPicturesError, { enableHighAccuracy: true });
}

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Поскольку вы специально не упомянули об этом, я предполагаю, что у вас есть доступ к jQuery внутри вашего приложения Cordova.

Внутри onSuccess вы должны сделать AJAX-вызов, который передает изображениеи местоположение на ваш сервер PHP.Ниже приведен пример:

var request = {
  'url': 'path/to/your/php/script.php',
  'method': 'POST',
  'data': {
    'image': image.src,
    'location': getLocation()
  }
}
$.ajax(request).done(function(response) {
  // request is done
});

Ваш скрипт PHP-сервера должен будет принять входящие данные и сохранить их в вашей базе данных.

0 голосов
/ 25 февраля 2019

Вы можете использовать Плагин передачи файлов Cordova для загрузки своих фотографий в бэкэнд-сервис (БД).В FT Plugin вы можете добавить некоторые дополнительные заголовки или свойства, например, свойства LAT и LON.

...