Javascript 从SQlite中提取Lat Long并显示在webview上
目前,我希望通过从javascript访问java方法在webview上显示所有lat long值,但它没有显示lat long值 请帮我把它弄好 多谢各位 这是我的WebviewActivity.javaJavascript 从SQlite中提取Lat Long并显示在webview上,javascript,java,android,sqlite,leaflet,Javascript,Java,Android,Sqlite,Leaflet,目前,我希望通过从javascript访问java方法在webview上显示所有lat long值,但它没有显示lat long值 请帮我把它弄好 多谢各位 这是我的WebviewActivity.java static final String TAG = "JavascriptDataDemo"; //double[] data = new double[] {42.6, 24, 17, 15.4}; DataHelper myDB=new DataHelper(this); /** T
static final String TAG = "JavascriptDataDemo";
//double[] data = new double[] {42.6, 24, 17, 15.4};
DataHelper myDB=new DataHelper(this);
/** This passes our data out to the JS */
@JavascriptInterface
public String getData() {
myDB.insert(16.5048, 80.6338);
myDB.insert(16.5024,80.6432);
myDB.insert(16.512,80.6216);
myDB.insert(16.5124,80.6219);
Cursor cursor = myDB.fetchAllCountries();
double[] array = new double[cursor.getCount()];
double[] array1=new double[cursor.getCount()];
int i = 0;
if (cursor.moveToFirst()) {
do {
double data = cursor.getDouble(cursor.getColumnIndex("lat"));
double data1=cursor.getDouble(cursor.getColumnIndex("longt"));
array[i] = data;
array1[i]=data1;
i++;
} while (cursor.moveToNext());
}
Log.d(TAG, "getData() called");
return a1dToJson(array,array1).toString();
}
/** Allow the JavaScript to pass some data in to us.
@JavascriptInterface
public void setData(String newData) throws JSONException {
Log.d(TAG, "MainActivity.setData()");
JSONArray streamer = new JSONArray(newData);
data = new double[streamer.length()];
for (int i = 0; i < streamer.length(); i++) {
Double n = streamer.getDouble(i);
data[i] = n;
}
}*/
private Activity activity;
public Context getActivity() {
return activity;
}
public void setActivity(Activity app) {
this.activity = app;
}
@JavascriptInterface
public void finish() {
Log.d(TAG, "ArrayApplication.finish()");
activity.finish();
}
/** Sorry for not using the standard org.json.JSONArray but even in Android 4.2 it lacks
* the JSONArray(Object[]) constructor, making it too painful to use.
*/
private String a1dToJson(double[] data,double[] data1) {
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0,j=0; (i < data.length) && (j<data1.length); i++,j++) {
double d = data[i];
double s=data1[j];
if (i > 0 && j>0) {
sb.append("[");
sb.append(d);
sb.append(",");
sb.append(s);
sb.append("]");
}
}
sb.append("]");
return sb.toString();
}
}
static final String TAG=“JavascriptDataDemo”;
//double[]数据=新的double[]{42.6,24,17,15.4};
DataHelper myDB=新的DataHelper(此);
/**这会将我们的数据传递给JS*/
@JavascriptInterface
公共字符串getData(){
myDB.insert(16.5048,80.6338);
myDB.insert(16.5024,80.6432);
myDB.insert(16.512,80.6216);
myDB.插入(16.5124,80.6219);
Cursor Cursor=myDB.fetchAllCountries();
double[]数组=新的double[cursor.getCount()];
double[]array1=新的double[cursor.getCount()];
int i=0;
if(cursor.moveToFirst()){
做{
double data=cursor.getDouble(cursor.getColumnIndex(“lat”));
double data1=cursor.getDouble(cursor.getColumnIndex(“lont”));
数组[i]=数据;
阵列1[i]=数据1;
i++;
}while(cursor.moveToNext());
}
d(标记“getData()已调用”);
返回a1dToJson(数组,array1.toString();
}
/**允许JavaScript向我们传递一些数据。
@JavascriptInterface
公共void setData(字符串newData)抛出JSONException{
Log.d(标记“MainActivity.setData()”);
JSONArray拖缆=新JSONArray(新数据);
数据=新的双精度[streamer.length()];
对于(int i=0;i0){
某人加上(“[”);
某人(d);
某人加上(“,”);
某人追加;
某人加上(“]”);
}
}
某人加上(“]”);
使某人返回字符串();
}
}
my index.html,它访问android活动方法以显示数据
<html>
<head>
<script>
var showData = function() {
var data = android.getData();
data = JSON.parse(data);
window.alert("Hello! Data are: " + data + "; first = " + data[0]);
}
</script>
</head>
<body>
<input type="button" value="Display data" onclick="showData()">
<input type="button" value="Update data" onclick="setData();">
<br/>
<input type="button" value="Done" onclick="android.finish();">
</body>
</html>
var showData=函数(){
var data=android.getData();
data=JSON.parse(数据);
window.alert(“你好!数据是:“+Data+””,first=“+Data[0]);
}
我终于得到了答案
DataHelper myDB=new DataHelper(this);
//double[] data = new double[] {42.6, 24, 17, 15.4};
/** This passes our data out to the JS */
@JavascriptInterface
public String getData() {
myDB.insert(16.5048, 80.6338);
myDB.insert(16.5024,80.6432);
myDB.insert(16.512,80.6216);
myDB.insert(16.5124,80.6219);
Cursor cursor=myDB.fetchAllCountries();
double[] arr=new double[cursor.getCount()];
int i=0;
if(cursor.moveToFirst())
{
do {
double data=cursor.getDouble(cursor.getColumnIndex("lat"));
arr[i]=data;
i++;
}while (cursor.moveToNext());
}
Log.d(TAG, "getData() called");
return a1dToJson(arr).toString();
}
@JavascriptInterface
public String getLong() {
Cursor cursor1=myDB.fetchAllCountries();
double[] arr1=new double[cursor1.getCount()];
int i=0;
if(cursor1.moveToFirst())
{
do {
double data1=cursor1.getDouble(cursor1.getColumnIndex("longt"));
arr1[i]=data1;
i++;
}while (cursor1.moveToNext());
}
Log.d(TAG, "getData() called");
return a1dToJson(arr1).toString();
}
private Activity activity;
public Context getActivity() {
return activity;
}
public void setActivity(Activity app) {
this.activity = app;
}
@JavascriptInterface
public void finish() {
Log.d(TAG, "ArrayApplication.finish()");
activity.finish();
}
/** Sorry for not using the standard org.json.JSONArray but even in Android 4.2 it lacks
* the JSONArray(Object[]) constructor, making it too painful to use.
*/
private String a1dToJson(double[] data) {
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < data.length; i++) {
double d = data[i];
if (i > 0)
sb.append(",");
sb.append(d);
}
sb.append("]");
return sb.toString();
}
DataHelper myDB=新的DataHelper(这个);
//double[]数据=新的double[]{42.6,24,17,15.4};
/**这会将我们的数据传递给JS*/
@JavascriptInterface
公共字符串getData(){
myDB.insert(16.5048,80.6338);
myDB.insert(16.5024,80.6432);
myDB.insert(16.512,80.6216);
myDB.插入(16.5124,80.6219);
Cursor Cursor=myDB.fetchAllCountries();
double[]arr=newdouble[cursor.getCount()];
int i=0;
if(cursor.moveToFirst())
{
做{
double data=cursor.getDouble(cursor.getColumnIndex(“lat”));
arr[i]=数据;
i++;
}while(cursor.moveToNext());
}
d(标记“getData()已调用”);
返回a1dToJson(arr.toString();
}
@JavascriptInterface
公共字符串getLong(){
游标cursor1=myDB.fetchAllCountries();
double[]arr1=新的double[cursor1.getCount()];
int i=0;
if(cursor1.moveToFirst())
{
做{
double data1=cursor1.getDouble(cursor1.getColumnIndex(“lont”));
arr1[i]=data1;
i++;
}while(cursor1.moveToNext());
}
d(标记“getData()已调用”);
返回a1dToJson(arr1.toString();
}
私人活动;
公共上下文getActivity(){
返回活动;
}
公共活动(活动应用程序){
this.activity=app;
}
@JavascriptInterface
公共空间整理(){
Log.d(标记“arrayaapplication.finish()”);
activity.finish();
}
/**很抱歉没有使用标准的org.json.JSONArray,但即使在Android 4.2中,它也缺少
*JSONArray(Object[])构造函数,使用起来太麻烦了。
*/
专用字符串a1dToJson(双[]数据){
StringBuffer sb=新的StringBuffer();
某人加上(“[”);
对于(int i=0;i0)
某人加上(“,”);
某人(d);
}
某人加上(“]”);
使某人返回字符串();
}
javascript文件是
<html>
<head>
<script>
var showData = function() {
var data = android.getData();
data=JSON.parse(data);
var data1 = android.getLong();
data1=JSON.parse(data1);
window.alert("Hello! Data are: " + data );
window.alert("Hello! Data are: " + data1 );
}
</script>
</head>
<body>
<input type="button" value="Display data" onclick="showData()">
<input type="button" value="Done" onclick="android.finish();">
</body>
</html>
var showData=函数(){
var data=android.getData();
data=JSON.parse(数据);
var data1=android.getLong();
data1=JSON.parse(data1);
window.alert(“你好!数据是:“+Data”);
window.alert(“你好!数据为:+data1”);
}
我终于得到了答案
DataHelper myDB=new DataHelper(this);
//double[] data = new double[] {42.6, 24, 17, 15.4};
/** This passes our data out to the JS */
@JavascriptInterface
public String getData() {
myDB.insert(16.5048, 80.6338);
myDB.insert(16.5024,80.6432);
myDB.insert(16.512,80.6216);
myDB.insert(16.5124,80.6219);
Cursor cursor=myDB.fetchAllCountries();
double[] arr=new double[cursor.getCount()];
int i=0;
if(cursor.moveToFirst())
{
do {
double data=cursor.getDouble(cursor.getColumnIndex("lat"));
arr[i]=data;
i++;
}while (cursor.moveToNext());
}
Log.d(TAG, "getData() called");
return a1dToJson(arr).toString();
}
@JavascriptInterface
public String getLong() {
Cursor cursor1=myDB.fetchAllCountries();
double[] arr1=new double[cursor1.getCount()];
int i=0;
if(cursor1.moveToFirst())
{
do {
double data1=cursor1.getDouble(cursor1.getColumnIndex("longt"));
arr1[i]=data1;
i++;
}while (cursor1.moveToNext());
}
Log.d(TAG, "getData() called");
return a1dToJson(arr1).toString();
}
private Activity activity;
public Context getActivity() {
return activity;
}
public void setActivity(Activity app) {
this.activity = app;
}
@JavascriptInterface
public void finish() {
Log.d(TAG, "ArrayApplication.finish()");
activity.finish();
}
/** Sorry for not using the standard org.json.JSONArray but even in Android 4.2 it lacks
* the JSONArray(Object[]) constructor, making it too painful to use.
*/
private String a1dToJson(double[] data) {
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < data.length; i++) {
double d = data[i];
if (i > 0)
sb.append(",");
sb.append(d);
}
sb.append("]");
return sb.toString();
}
DataHelper myDB=新的DataHelper(这个);
//double[]数据=新的double[]{42.6,24,17,15.4};
/**这会将我们的数据传递给JS*/
@JavascriptInterface
公共字符串getData(){
myDB.insert(16.5048,80.6338);
myDB.insert(16.5024,80.6432);
myDB.insert(16.512,80.6216);
myDB.插入(16.5124,80.6219);
Cursor Cursor=myDB.fetchAllCountries();
double[]arr=newdouble[cursor.getCount()];
int i=0;
if(cursor.moveToFirst())
{
做{
double data=cursor.getDouble(cursor.getColumnIndex(“lat”));
arr[i]=数据;
i++;
}while(cursor.moveToNext());
}
d(标记“getData()已调用”);
返回a1dToJson(arr.toString();
}
@JavascriptInterface
公共字符串getLong(){
游标cursor1=myDB.fetchAllCountries();
double[]arr1=新的double[cursor1.getCount()];
int i=0;
if(cursor1.moveToFirst())
{
做{
双精度数据1=cursor1.getDou