android - android中最接近的地方

标签 android

我的目标是搜索离我当前位置最近的地方。

我有一个 XML 文件,其中包含她的经纬度坐标的不同位置。

我创建了一个代码来确定我当前的位置

    package com.geoo;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;

public class localisation extends ActivityBase{

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);
setContentView(R.layout.localisation);

/* Use the LocationManager class to obtain GPS locations */

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

LocationListener mlocListener = new MyLocationListener();

mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

}

/* Class My Location Listener */

public class MyLocationListener implements LocationListener

{

@Override

public void onLocationChanged(Location loc)

{

loc.getLatitude();

loc.getLongitude();

String Text = "My current location is: " + "Latitud = " + loc.getLatitude()+  "Longitud = " + loc.getLongitude();
Toast.makeText( getApplicationContext(),Text, Toast.LENGTH_SHORT).show();
}

@Override

public void onProviderDisabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
}

@Override

public void onProviderEnabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}

@Override

public void onStatusChanged(String provider, int status, Bundle extras)

{
}
}/* End of Class MyLocationListener */

}/* End of UseGps Activity */

我还创建了一个解析器 XML,这是代码

package xmlparse;


import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class QueryXML {
    public void query() throws ParserConfigurationException, SAXException,
            IOException, XPathExpressionException {
        // Standard of reading a XML file
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder builder;
        Document doc = null;
        XPathExpression expr = null;
        builder = factory.newDocumentBuilder();
        doc = builder.parse("a.xml");  //C:\\Users\\aymen\\Desktop\\

        // Create a XPathFactory
        XPathFactory xFactory = XPathFactory.newInstance();

        // Create a XPath object
        XPath xpath = xFactory.newXPath();

        // Compile the XPath expression
        expr = xpath.compile("/postes/poste[gouvernourat='Tunis']/longitude/text()");
        // Run the query and get a nodeset
        Object result = expr.evaluate(doc, XPathConstants.NODESET);

        // Cast the result to a DOM NodeList
        NodeList nodes = (NodeList) result;
        for (int i=0; i<nodes.getLength();i++){
            System.out.println(nodes.item(i).getNodeValue());
        }
    }

    public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException {
        QueryXML process = new QueryXML();
        process.query();
    }
}

现在我如何确定与我当前位置成比例的最近的地方?

提前致谢

最佳答案

纬度之间的距离恒定(每度约 110 公里),但距离经度取决于纬度。我认为您最好的选择是转换为 XYZ 笛卡尔坐标(单位为米),然后使用简单的距离方程来找到最近的位置。

距离=sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2).

要将 Lat Long Altitude 转换为 XYZ(米),我使用以下方法。

R = 6,378,100//以米为单位的地球半径

LAT = 纬度 * pi/180;

LON = 经度 * pi/180;

x = -R * cos(LAT) * cos(LON);

y = R * sin(经纬度);

z = R * cos(LAT) * sin(LON);

关于android - android中最接近的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737858/

相关文章:

java - 将记分板添加到 Android Studio 应用程序

java - 安卓 ButterKnife java.lang.NoClassDefFoundError : Failed resolution of: Lbutterknife/ButterKnife

java - Android 解析 Json 对 Java ArrayList 的响应

android - Android 5.0 中的屏幕捕获和共享

android onclicklistener 打不开页面

java - 应用程序未启动。找不到错误

Android AsyncTask 传递变量值

java - 在 SoundCloud Android 应用程序中使用 Facebook 和 Google Plus 登录

java - FileChannel.position() 线程安全吗?

android - 检查设备是否支持webP图片格式