- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个简单的程序来执行将显示在 ListView 中的距离计算。我使用 androidhive 中的 GPSTracker,并为我的列表 Activity 调用纬度和经度
public class GPSTracker extends Service implements LocationListener {
private final Context mContext;
boolean isGPSEnabled =false;
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
Location location;
double latitude;
double longitude;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
// Declaring a Location Manager
protected LocationManager locationManager;
public GPSTracker(Context context){
this.mContext = context;
getLocation();
}
public Location getLocation() {
try{
locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!isGPSEnabled&& !isNetworkEnabled){
//no network enable
}else {
this.canGetLocation = true;
if(isNetworkEnabled){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network","Network");
if(locationManager != null){
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location != null){
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
if(isGPSEnabled){
if(location == null){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if(location != null){
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
} catch (Exception e){
e.printStackTrace();
}
return location;
}
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(GPSTracker.this);
}
}
public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}
return latitude;
}
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}
return longitude;
}
public boolean canGetLocation(){
return this.canGetLocation;
}
/**
* Function to show settings alert dialog
* On pressing Settings button will lauch Settings Options
* */
public void showSettingsAlert(){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
// Setting Dialog Title
alertDialog.setTitle("GPS is settings");
// Setting Dialog Message
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
// On pressing Settings button
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mContext.startActivity(intent);
}
});
// on pressing cancel button
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
还有我的列表 Activity
public class Mobil extends ListFragment implements LocationListener{
GPSTracker gps;
private static final String url = "http://10.0.2.2/tambalban/car.php";
JSONArray tambalban = null;
ArrayList<HashMap<String, String>> listMobil = new ArrayList<HashMap<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new getJSONData().execute();
}
public class getJSONData extends
AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> {
@Override
protected ArrayList<HashMap<String, String>> doInBackground(
String... params) {
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromURL(url);
gps = new GPSTracker(getActivity()); // is it right calling from GPSTracker?
double lat_user = gps.getLatitude(); // get latitude, right?
double lng_user = gps.getLongitude();
System.out.println("lat_user : "+lat_user+""); // print in logcat return 0.00
System.out.println("lng_user : "+lng_user+"");// print in logcat return 0.00
try {
tambalban = json.getJSONArray(TAG_TAMBALBAN);
for (int i = 0; i < tambalban.length(); i++) {
JSONObject mtr = tambalban.getJSONObject(i);
String id_tb = mtr.getString(TAG_ID);
String name_tb = mtr.getString(TAG_NAMA);
String address_tb = mtr.getString(TAG_ALAMAT);
String telp_tb = mtr.getString(TAG_TELP);
String lat = mtr.getString(TAG_LAT);
String lng = mtr.getString(TAG_LNG);
double lat_tujuan = Double.parseDouble(lat);
double lng_tujuan = Double.parseDouble(lng);
double distance = hitungJarak(lat_user, lng_user, lat_tujuan, lng_tujuan);
distance = RoundDecimal(distance, 2);
String dist = Double.toString(distance)+" km";
HashMap<String, String> a = new HashMap<String, String>();
a.put(TAG_ID, id_tb);
a.put(TAG_NAMA, name_tb);
a.put(TAG_ALAMAT, address_tb);
a.put(TAG_TELP, telp_tb);
a.put(TAG_LAT, lat);
a.put(TAG_LNG, lng);
a.put(TAG_JARAK, dist);
listMobil.add(a);
}
} catch (JSONException e) {
e.printStackTrace();
}
return listMobil;
}
private double RoundDecimal(double distance, int i) {
BigDecimal bd = new BigDecimal(distance);
bd = bd.setScale(i, 6);
return bd.doubleValue();
}
private double hitungJarak(double lat_user, double lng_user,
double lat_tujuan, double lng_tujuan) {
double dist;
double radius = 6371;
double dLat = Math.toRadians(lat_tujuan - lat_user);
double dLon = Math.toRadians(lng_tujuan- lng_user);
double a = Math.sin(dLat/2) * Math.sin(dLat /2)
+ Math.cos(Math.toRadians(lat_user)) * Math.cos(Math.toRadians(lat_tujuan))
* Math.sin(dLon/ 2) * Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult = radius * c;
double km = valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
int kmInDec = Integer.valueOf(newFormat.format(km));
dist = radius * c;
return dist;
}
@Override
protected void onPostExecute(
ArrayList<HashMap<String, String>> listMobil) {
// TODO Auto-generated method stub
super.onPostExecute(listMobil);
ListAdapter adapter = new SimpleAdapter(getActivity(), listMobil,
R.layout.list_item, new String[] { TAG_NAMA, TAG_ALAMAT, TAG_JARAK },
new int[] { R.id.namatb, R.id.alamattb,R.id.jarak });
setListAdapter(adapter);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.list_fragment, container, false);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String pilih = getListAdapter().getItem(position).toString();
Toast.makeText(getActivity(),
pilih,
Toast.LENGTH_LONG).show();
Intent i = new Intent(getActivity(), DetailDaftar.class);
Bundle bundle = new Bundle();
bundle.putString("Selected", pilih);
i.putExtras(bundle);
startActivity(i);
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
我使用 Sytem.out.println 检查,纬度和经度都返回 0.00。我调用当前位置错了吗?感谢您的帮助。
最佳答案
您应该在 AsyncTask
之外创建您的 GPSTracker gps
对象,尝试像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gps = new GPSTracker(getActivity()); // is it right calling from GPSTracker?
new getJSONData().execute();
并且还将所需的权限
添加到您的manifest.xml
文件中:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
关于Android-获取当前位置但经纬度返回0.0(计算错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641991/
我对纬度和经度有疑问。当我想获取坐标时,只有 24 个 API 检索坐标。其他人没有。不知道为什么 我正在使用 GPSTracker 服务 public Location getLocation()
我有一个表(DB2 数据库),其中包含城市信息和相应的经纬度以及与城市相关的许多其他信息。我的要求是: 我的应用程序的输入将是纬度和经度,它们可能是或许多不是存储在数据库中的精确纬度和经度。我需要借助
我在经度和纬度上有一个位置 (A)。 我有一条线段,起点(B)和终点(C)在经度和纬度上。 我试图计算的是从 A 到 BC 线的最短距离。 换句话说,从 A 到最近点(在 BC 线上)的距离(以米为单
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
这个问题在这里已经有了答案: Find nearest latitude/longitude with an SQL query (18 个答案) 关闭 6 年前。 我正在尝试编写一个在某个位置附近
我正在尝试将 Yelp 的 API 与纬度/经度位置结合使用。我使用了 yelp 给出的 javascript 代码,它基本上有一个参数数组,并像这样将值插入其中: parameters.push([
我有一大组纬度和经度需要存储在 MySQL 数据库中。我正在阅读有关要使用的字段类型的相互矛盾的建议。 数据的一个例子是... Lat | Long -----------------
在我的应用程序中,我通过以特定时间间隔从服务器获取他们的位置(纬度和经度)来显示其他人的位置。 获取后,我必须删除所有注释并删除基于服务器数据的新注释。 但它看起来非常低效,因为当我们以前存在相同用户
我正在尝试将鼠标在谷歌地图上的位置转换为 LatLng 对象。我看到很多关于通过谷歌地图“点击”事件等获取位置的帖子,如下所示: google.maps.event.addListener(map,
我的 SQLite 数据库中存储了经纬度数据,我想获取与我输入的参数最近的位置(例如,我当前的位置 - 纬度/经度等)。 我知道这在 MySQL 中是可能的,并且我已经进行了相当多的研究,认为 SQL
伙计们,我在我的 Android 应用程序中实现了谷歌地图,并开始创建一个标记,我在 map 中间放置了一个标记图像。现在,我希望每当用户拖动 map 时,我都能得到 map 中心的位置(我放置图像的
我正在实现 GPS 跟踪器以从 http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/ 获取经度和纬度.
我有一个多边形形状文件(可下载 here ),我想从中创建一个包含 3 列的 data.frame ,其中包含: 多边形 ID 质心纬度 质心经度 来自这个答案here ,我知道以 Formal Cl
有没有办法使用facebook api以(纬度和经度格式)获取用户的位置? 我能够获得位置名称和其他属性,但不能获得该地点的经纬度。 javascript中是否有相同的API。 最佳答案 如果您有用户
在我的“原生”Android 应用程序中,我试图计算 map 上两个位置之间以英尺和/或米(如乌鸦飞翔)为单位的距离。理想情况下,会有一种方法将两个 LatLng 值(因为这是我随时可用的)作为输入并
我想使用 Google API 获取 GPS 位置。 我的代码: mGoogleApiClient = new GoogleApiClient.Builder(this)
这个问题在这里已经有了答案: How to calculate the latlng of a point a certain distance away from another? (6 个答案)
我是一名优秀的程序员,十分优秀!