在SQLite中保存坐标

问题描述:

我正在为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

您需要打开一个数据库:

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

然后

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

检查Phonegap Storage Docs