Actionscript 3 如何在FlashBuilder中存储GPS坐标?
我正在开发一个应用程序,我需要将所有GPS坐标存储在数据库中。我可以保存它,但只能保存最后的坐标 我的问题是,如何存储用户活动的所有坐标?我正在使用WAMP服务器。这是我的代码,只存储最后的坐标。注意,我只使用此代码存储Long和LatActionscript 3 如何在FlashBuilder中存储GPS坐标?,actionscript-3,flash-builder,Actionscript 3,Flash Builder,我正在开发一个应用程序,我需要将所有GPS坐标存储在数据库中。我可以保存它,但只能保存最后的坐标 我的问题是,如何存储用户活动的所有坐标?我正在使用WAMP服务器。这是我的代码,只存储最后的坐标。注意,我只使用此代码存储Long和Lat protected function onUpdate(event:GeolocationEvent):void { trace("Update event called"); log.text = "latitude = " + event.latit
protected function onUpdate(event:GeolocationEvent):void {
trace("Update event called");
log.text = "latitude = " + event.latitude +
"\nlongitude = " + event.longitude +
"\naltitude = " + event.altitude +
"\nverticalAccuracy = " + event.verticalAccuracy +
"\nhorizontalAccuracy = " + event.horizontalAccuracy +
"\nspeed = " + event.speed +
"\nheading = " + event.heading +
"\ntimestamp = " + event.timestamp;
lat.text="" + event.latitude;
long.text="" + event.longitude;
langTextInput.text = long.text
latTextInput.text=lat.text
gpstableService.commit();
我认为您需要问自己的第一个问题是,您是想将此坐标存储在本地还是WAMP服务器上 如果您只在本地需要它们,那么一个简单的选择就是使用本地SharedObject(例如,您可以将接收事件的日期作为密钥存储任何新职位)。 如果您真的想使用本地数据库,那么您可以使用如下服务:
package
{
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.SQLEvent;
public class DatabaseService extends EventDispatcher
{
public var conn:SQLConnection;
public function DatabaseService()
{
conn = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, handleConnectionSuccess);
conn.openAsync(null);
}
public function addCoordinates(lat:String, long:String):void
{
var insertStmt:SQLStatement = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "INSERT INTO coordinates (latitude, longitude)" +
" VALUES (" + lat + ", " + long + ")";
insertStmt.text = sql;
insertStmt.addEventListener(SQLEvent.RESULT, handleInsertionResult);
insertStmt.execute();
}
private function createTable():void
{
var createStmt:SQLStatement = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String = "CREATE TABLE IF NOT EXISTS coordinates " +
"( coordId INTEGER PRIMARY KEY AUTOINCREMENT, latitude TEXT, longitude TEXT)";
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, handleTableCreationResult);
createStmt.execute();
}
private function handleConnectionSuccess(event:SQLEvent):void
{
createTable();
}
private function handleTableCreationResult(event:SQLEvent):void
{
dispatchEvent(new Event(Event.COMPLETE));
}
private function handleInsertionResult(event:SQLEvent):void
{
var stmt:SQLStatement = event.target as SQLStatement;
stmt.removeEventListener(SQLEvent.RESULT, handleInsertionResult);
trace ("Coordinates are saved in DB");
}
}
}
然后,您可以在每次收到GPS事件时呼叫此服务:
protected function onUpdate(event:GeolocationEvent):void
{
trace("Update event called");
gpsTableService.addCoordinates(event.latitude, event.longitude);
}
其中,gpsTableService
是DatabaseService
的一个实例
如果您需要在服务器上发送此信息,那么您应该编写一个PHP脚本来处理您的请求。此脚本将负责数据库管理,即将数据存储到其中。要从Flash应用程序调用此脚本,则需要将用户设置为
URLVariable
、URLRequest
和urloader
是否确实需要将其存储在数据库中?共享对象呢?