重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
很麻烦,屏幕保护程序,是一定格式的.exe文件来的。JAVA程序要转成纯.exe还有些困难。
目前创新互联已为1000多家的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、惠山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
自己写一个.exe根据不同的参数启动JAVA程序,还可以。
package com.ict.dto;
/**
* Created by chenlong on 2017/7/6.
* Info:
*/
public class Point {
public double lon;
public double lat;
public Point(double lon, double lat) {
this.lon = lon;
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
}
private int R=6371000;//地球半径
public double getDistance(Point p1,Point cirp2){
double rad=Math.PI/180;
double lat1=p1.getLat()*rad;
double lat2=cirp2.getLat()*rad;
double a=Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos((cirp2.getLon()-p1.getLon())*rad);
double distance=R*Math.acos((Math.min(a,1)));
return distance;
}
import java.awt.*;
import java.io.File;code_br_import java.io.IOException;code_br_import java.applet.*;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestRunnable extends Applet implements Runnable{
Thread Thread;
public Image image = null;
public int t = 0;
public void start(){
Thread = new Thread(this);
Thread.start();
}
public void run(){
while(true){
this.setSize(1000, 600);
repaint();
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public void paint(Graphics g){
try {
image = ImageIO.read(new File("E:/zp/" + t + ".png"));
t = (t + 1) % 110 ;
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
} catch (IOException e) {
e.printStackTrace();
}
}
}
1. 这不是用球坐标就好了嘛.
好我再看看google是什么东西再补.
2. EARTH_RADIUS;是地球半径.
rad好像是把经纬度转弧度的....不看google和.
就是球坐标的r,θ,φ. 明白就好.
纬度同.用经度差乘地球半径
经度同.用纬度差乘地球半径...
等再看下google,再补.
3. 你的double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)+ Math.cos(radLat1) * Math.cos(radLat2)* Math.pow(Math.sin(b / 2), 2)));
是不是错了.经纬度不对称啊.
4.你的问题已经解决,明确google的算法同样按球坐标来考虑,不过球坐标的φ是和z的夹角,而纬度是和赤道(Oxy平面)的夹角.
1.
创建一个记事本
2.
在记事本中输入
java love1
然后另存为love1.bat
3.
然后把这个bat文件和你的这个类编译后的class文件都丢到桌面上
4.
双击运行bat文件
PS:如果你要想做成桌面exe,可以使用exe4j来打包,不过exe一般是针对有界面的cs程序
距离可以用r*arccos[cos(y1)*cos(y2)*cos(x1x2)+sin(y1)*sin(y2)]来算
r是地球半径6370km,x是经度,y是纬度
注意角度单位的转换。Math类里的sin和cos函数的参数是以弧度为单位的角度,所以x1、x2、y1、y2要用弧度表示,但一般经纬度都是用角度表示(如X1=120 东经120度)就要化成弧度(x1*Pi/180)
而acos函数返回值正好是以弧度为单位的,刚好符合要求
如果你的代码里的lat1、lat2、lon1、lon2单位是角度,可以这么改
double radius=6371000;
double distance=radius*Math.acos((Math.cos(lat2*Math.PI/180)*Math.cos(lat2*Math.PI/180)*Math.cos(lon1*Math.PI/180-lon2*Math.PI/180)+Math.sin(lat1*Math.PI/180)*Math.sin(lat2*Math.PI/180)));
我算出来是903.9千米