2012-08-10 49 views
1

我正在爲Cordova 2.0.0進行開發。我在android 2.2上測試我的應用程序。 現在我得到了獲取用戶位置的代碼,然後在帶有標記的谷歌地圖中顯示它。首先我retreiving地理位置代碼,並將其顯示在谷歌地圖:在SQLite中保存座標

> function onLoad() { document.addEventListener("deviceready", 
> onDeviceReady, false); } 
> 
> function onDeviceReady() { 
> 
> } 
> 
> var onSuccess = function(position) { 
>  var myLat = position.coords.latitude; 
>  var myLong = position.coords.longitude; 
> 
>  
>  var mapOptions = { 
>   center: new google.maps.LatLng(myLat, myLong), 
>   zoom: 14, 
>   mapTypeId: google.maps.MapTypeId.ROADMAP 
>  }; 
> 
> var map = new google.maps.Map(document.getElementById("map_canvas"), 
>         mapOptions); 
> 
>  var marker = new google.maps.Marker({ 
>         position: new google.maps.LatLng(myLat, myLong), 
>           map: map, 
>           title:"Hello World!" 
>           }); 
> 
> }; 
> 
> 
> function onError(error) { 
>  alert('code: ' + error.code + '\n' + 
>   'message: ' + error.message + '\n'); } 
> 
> 
> 
> navigator.geolocation.getCurrentPosition(onSuccess, onError, 
>  {'enableHighAccuracy':true,'timeout':10000}); 

現在對於我的數據庫的代碼,我用從http://docs.phonegap.com/en/2.0.0/cordova_storage_storage.md.html#Storage的例子:

> <!DOCTYPE html> <html> <head> 
>  <title>Storage Example</title> 
>  <script type="text/javascript" src="jqtouch/jquery.js" charset="utf-8"></script> 
>  <script type="text/javascript" src="jqtouch/jqtouch.js" charset="utf-8"></script> 
>  <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> 
>  <script type="text/javascript" charset="utf-8"> 
> 
>  // Wait for Cordova to load 
>  // 
>  document.addEventListener("deviceready", onDeviceReady, false); 
> 
>  // Populate the database 
>  // 
>  function populateDB(tx) { 
>   tx.executeSql('DROP TABLE IF EXISTS DEMO'); 
>   tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, longitude, latitude)'); 
>   tx.executeSql('INSERT INTO DEMO (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, longitude, latitude); 
>  } 
> 
>  // Query the database 
>  // 
>  function queryDB(tx) { 
>   tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
>  } 
> 
>  // Query the success callback 
>  // 
>  function querySuccess(tx, results) { console.log("Returned rows = " + results.rows.length); if (!results.rowsAffected) { 
>  console.log('No rows affected!'); 
>  return false; } // for an insert statement, this property will return the ID of the last inserted row console.log("Last inserted 
> row ID = " + results.insertId); 
>  } 
> 
>  // Transaction error callback 
>  function errorCB(err) { 
>  console.log("Error processing SQL: "+err.code); 
>  } 
> 
>  // Transaction success callback 
>  
>  function successCB() { 
>   var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000); 
>   db.transaction(queryDB, errorCB); 
>  } 
> 
>  // Cordova is ready 
>  // function onDeviceReady() { 
>   var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000); 
>   db.transaction(populateDB, errorCB, successCB); 
>  } 
> 
>  </script> </head> <body> 
>  <h1>Example</h1> 
>  <p>Database</p> </body> </html> 

我不知道如何把長/緯度值,我將從我的數據庫中的GPS(地理位置)中檢索。 任何教程,示例代碼或建議非常感謝。

我在想一個長的像這樣的臺詞:

> //GEOLOCATION 
>  var onSuccess = function(position) { 
>  var myLat = position.coords.latitude; 
>  var myLong = position.coords.longitude; 
>  insertEntry(latitude, longitude); 
>  //MAP 
> 
> 
> function insertEntry(latitude, longitude) { 
>  db.transaction(
>   function(populateDB) { 
>    tx.executeSql(
>     'INSERT INTO entries (latitude, longitude) ' + 
>      'VALUES (?, ?);', 
>     [latitude, longitude], 
>     function(){ 
>     }, 
>     errorHandler 
>   ); 
>   } 
> ); 
+0

我知道我將不得不做一個功能,它需要我從我的GPS獲得的繩索,然後把它們放入數據庫。但我不知道如何做到這一點。我以前從未使用JS和html5,所以任何幫助都會很棒。 – user1521000 2012-08-13 10:12:07

回答

1

您需要打開一個數據庫:

var db = window.openDatabase("dbName", "1.0", "Db Name", 100000); 

然後

db.transaction(
    function(populateDB) 
     ..... 

檢查Phonegap Storage Docs