- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用一个调用方法 points()
的构造函数。该方法计算3个点的纬度和经度。我需要在另一个类(class)中使用这些值(value)观。因此我试图在构造函数中调用该方法。请帮我解决这个问题的语法。
这是我的类(class) FirstActivity
package com.example.gpsdistance;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class FirstActivity extends Activity {
Button btnShowLocation, btnMinDis;
TextView display= null;
public float check= 5;
//private final Context mctx;
double latuser;
double longuser;
double dx1, dy1, delta_long1, delta_lat1, final_long1, final_lat1;
double dx2, dy2, delta_long2, delta_lat2, final_long2, final_lat2;
double dx3, dy3, delta_long3, delta_lat3, final_long3, final_lat3;
public float latA, longA, latB, longB, latC, longC, lati1;
// GPSTracker class
GPSTracker gps;
void points()
{
latuser = gps.getLatitude();
longuser = gps.getLongitude();
dx1 = 120*Math.cos(35);
dy1 = 120*Math.sin(35);
delta_long1 = dx1/(111320*Math.cos(latuser));
delta_lat1 = dy1/110540;
final_long1 = longuser + delta_long1;
final_lat1 = latuser + delta_lat1;
dx2 = 150*Math.cos(38);
dy2 = 150*Math.sin(38);
delta_long2 = dx2/(111320*Math.cos(latuser));
delta_lat2 = dy2/110540;
final_long2 = longuser + delta_long2;
final_lat2 = latuser + delta_lat2;
dx3 = 180*Math.cos(38);
dy3 = 180*Math.sin(38);
delta_long3 = dx3/(111320*Math.cos(latuser));
delta_lat3 = dy3/110540;
final_long3 = longuser + delta_long3;
final_lat3 = latuser + delta_lat3;
latA= (float)final_lat1;
longA= (float)final_long1;
latB= (float)final_lat2;
longB= (float)final_long2;
latC= (float)final_lat3;
longC= (float)final_long3;
}
private float computeDistance(double lat1, double lon1,
double lat2, double lon2) {
// Based on http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf
// using the "Inverse Formula" (section 4)
int MAXITERS = 20;
// Convert lat/long to radians
lat1 *= Math.PI / 180.0;
lat2 *= Math.PI / 180.0;
lon1 *= Math.PI / 180.0;
lon2 *= Math.PI / 180.0;
double a = 6378137.0; // WGS84 major axis
double b = 6356752.3142; // WGS84 semi-major axis
double f = (a - b) / a;
double aSqMinusBSqOverBSq = (a * a - b * b) / (b * b);
double L = lon2 - lon1;
double A = 0.0;
double U1 = Math.atan((1.0 - f) * Math.tan(lat1));
double U2 = Math.atan((1.0 - f) * Math.tan(lat2));
double cosU1 = Math.cos(U1);
double cosU2 = Math.cos(U2);
double sinU1 = Math.sin(U1);
double sinU2 = Math.sin(U2);
double cosU1cosU2 = cosU1 * cosU2;
double sinU1sinU2 = sinU1 * sinU2;
double sigma = 0.0;
double deltaSigma = 0.0;
double cosSqAlpha = 0.0;
double cos2SM = 0.0;
double cosSigma = 0.0;
double sinSigma = 0.0;
double cosLambda = 0.0;
double sinLambda = 0.0;
double lambda = L; // initial guess
for (int iter = 0; iter < MAXITERS; iter++) {
double lambdaOrig = lambda;
cosLambda = Math.cos(lambda);
sinLambda = Math.sin(lambda);
double t1 = cosU2 * sinLambda;
double t2 = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda;
double sinSqSigma = t1 * t1 + t2 * t2; // (14)
sinSigma = Math.sqrt(sinSqSigma);
cosSigma = sinU1sinU2 + cosU1cosU2 * cosLambda; // (15)
sigma = Math.atan2(sinSigma, cosSigma); // (16)
double sinAlpha = (sinSigma == 0) ? 0.0 :
cosU1cosU2 * sinLambda / sinSigma; // (17)
cosSqAlpha = 1.0 - sinAlpha * sinAlpha;
cos2SM = (cosSqAlpha == 0) ? 0.0 :
cosSigma - 2.0 * sinU1sinU2 / cosSqAlpha; // (18)
double uSquared = cosSqAlpha * aSqMinusBSqOverBSq; // defn
A = 1 + (uSquared / 16384.0) * // (3)
(4096.0 + uSquared *
(-768 + uSquared * (320.0 - 175.0 * uSquared)));
double B = (uSquared / 1024.0) * // (4)
(256.0 + uSquared *
(-128.0 + uSquared * (74.0 - 47.0 * uSquared)));
double C = (f / 16.0) *
cosSqAlpha *
(4.0 + f * (4.0 - 3.0 * cosSqAlpha)); // (10)
double cos2SMSq = cos2SM * cos2SM;
deltaSigma = B * sinSigma * // (6)
(cos2SM + (B / 4.0) *
(cosSigma * (-1.0 + 2.0 * cos2SMSq) -
(B / 6.0) * cos2SM *
(-3.0 + 4.0 * sinSigma * sinSigma) *
(-3.0 + 4.0 * cos2SMSq)));
lambda = L +
(1.0 - C) * f * sinAlpha *
(sigma + C * sinSigma *
(cos2SM + C * cosSigma *
(-1.0 + 2.0 * cos2SM * cos2SM))); // (11)
double delta = (lambda - lambdaOrig) / lambda;
if (Math.abs(delta) < 1.0e-12) {
break;
}
}
float distance = (float) (b * A * (sigma - deltaSigma));
return distance;
}
FirstActivity()
{
points();
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.firstactivity);
final LinearLayout lView = new LinearLayout(this);
display= new TextView(this);
btnMinDis=new Button(this);
btnMinDis.setText("Nearest Point");
final Handler mHandler = new Handler();
btnShowLocation = (Button) findViewById(R.id.buttonLocation);
btnShowLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
// create class object
gps = new GPSTracker(FirstActivity.this);
// check if GPS enabled
if(gps.canGetLocation())
{
points();
float initialdisA = computeDistance( latuser, longuser, latA, longA);
float initialdisB = computeDistance( latuser, longuser, latB, longB);
float initialdisC = computeDistance( latuser, longuser, latC, longC);
Toast.makeText(getApplicationContext(),"\nLatitude: " + latA , Toast.LENGTH_LONG).show();
lView.addView(display);
setContentView(lView);
display.setText("Initial Location is - \nLatitude: " + latuser + " N" + "\nLongitude: " + longuser + " E"
+ "\n\n\nPoint A:\n" + "Latitude: " + latA + "N" + "\nLongitude: " + longA + "E"
+ "\nPoint B:\n" + "Latitude: " + latB + "N" + "\nLongitude: " + longB + "E"
+ "\nPoint C:\n" + "Latitude: " + latC + "N" + "\nLongitude: " + longC + "E"
+ "\n\n\nInitial Distance A: " + initialdisA + "m" + "\nInitial Distance B: " + initialdisB + "m" + "\nInitial Distance C: " + initialdisC + "m");
mHandler.postDelayed(mLaunchTask,10000);
}
else
{
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
gps.showSettingsAlert();
}
}
private Runnable mLaunchTask = new Runnable()
{
public void run()
{
Intent i = new Intent(getApplicationContext(),NearestPoint.class);
startActivity(i);
}
};
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.firstactivity, menu);
return true;
}
}
我尝试使用这些:
1)
FirstActivity()
{
points();
}
2)
FirstActivity(Context context)
{
this.mContext = context;
points();
}
我都收到错误:“应用程序停止工作...”
这是我的日志:
01-19 10:12:40.488: D/dalvikvm(608): newInstance failed: Lcom/example/gpsdistance/FirstActivity;.<init>() not accessible to Landroid/app/Instrumentation;
01-19 10:12:40.538: D/AndroidRuntime(608): Shutting down VM
01-19 10:12:40.578: W/dalvikvm(608): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-19 10:12:40.688: E/AndroidRuntime(608): FATAL EXCEPTION: main
01-19 10:12:40.688: E/AndroidRuntime(608): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.gpsdistance/com.example.gpsdistance.FirstActivity}: java.lang.IllegalAccessException: access to constructor not allowed
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.os.Looper.loop(Looper.java:123)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-19 10:12:40.688: E/AndroidRuntime(608): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 10:12:40.688: E/AndroidRuntime(608): at java.lang.reflect.Method.invoke(Method.java:507)
01-19 10:12:40.688: E/AndroidRuntime(608): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-19 10:12:40.688: E/AndroidRuntime(608): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-19 10:12:40.688: E/AndroidRuntime(608): at dalvik.system.NativeStart.main(Native Method)
01-19 10:12:40.688: E/AndroidRuntime(608): Caused by: java.lang.IllegalAccessException: access to constructor not allowed
01-19 10:12:40.688: E/AndroidRuntime(608): at java.lang.Class.newInstanceImpl(Native Method)
01-19 10:12:40.688: E/AndroidRuntime(608): at java.lang.Class.newInstance(Class.java:1409)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-19 10:12:40.688: E/AndroidRuntime(608): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
01-19 10:12:40.688: E/AndroidRuntime(608): ... 11 more
01-19 10:12:43.669: I/Process(608): Sending signal. PID: 608 SIG: 9
最佳答案
您的积分函数包含此调用
latuser = gps.getLatitude();
但是,gps
变量尚未初始化。仅当用户按下您在 onCreate
事件中添加到 Activity 的按钮时,才会创建 gps
对象。
提前创建 GPS...例如在 points()
或者创建一个将在整个类(class)中使用的函数,而不是简单调用 gps
。
function getGPS() {
if (gps == null)
gps = new GPSTracker(FirstActivity.this);
return gps;
}
关于java - 使用构造函数调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14411043/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!