- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我点击 Button
时,我想将当前位置存储到数据库中。
位置已存储,但它正在接收 0.0,0.0 不知道我的代码中的错误在哪里我在这里发布我的完整代码,请帮助我解决这个问题。
获取当前位置
GetCurrentGPSLocation gps = new GetCurrentGPSLocation(getActivity());
// check if GPS enabled
if (gps.canGetLocation()) {
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
// \n is for new line
lat.setText( ""+latitude);
longi.setText("" +longitude);
latitude12=lat.getText().toString();
longitude12=longi.getText().toString();
Toast.makeText(getActivity(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
longi.setVisibility(View.INVISIBLE);
lat.setVisibility(View.INVISIBLE);
} else {
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
gps.showSettingsAlert();
}
获取当前 GPS 位置
package com.example.sachin.omcom;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class GetCurrentGPSLocation extends AppCompatActivity implements LocationListener {
private final Context mContext;
// flag for GPS status
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
// flag for GPS status
boolean canGetLocation = false;
Location location; // location
double latitude; // latitude
double longitude; // 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 GetCurrentGPSLocation(Context context) {
this.mContext = context;
getLocation();
}
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
// First get location from Network Provider
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 GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
/**
* Stop using GPS listener
* Calling this function will stop using GPS in your app
* */
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(GetCurrentGPSLocation.this);
}
}
/**
* Function to get latitude
* */
public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}
// return latitude
return latitude;
}
/**
* Function to get longitude
* */
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}
// return longitude
return longitude;
}
/**
* Function to check GPS/wifi enabled
* @return boolean
* */
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) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
// @Override
public IBinder onBind(Intent arg0) {
return null;
}}
最佳答案
onLocationChanged
每次您的位置更新时都会被调用,因此请保留并更新一个全局值并在您的 Button
上点击该值以执行您想要的操作
private LatLng latLng;
@Override
public void onLocationChanged(Location location) {
if(location!=null){
latLng = new LatLng(location.getLatitude(), location.getLongitude()); }
}
或者根据时间或距离,您也可以获得位置以及使用 android.location.LocationListener()
请参阅编辑,
如果您想在一段时间后手动调用 onLocationChanged
,即使位置未更改,请使用以下
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(30000); //5 seconds
mLocationRequest.setFastestInterval(30000); //3 seconds
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
//mLocationRequest.setSmallestDisplacement(0.1F); //1/10 meter
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
编辑 :这是位置监听器,如果需要,您可以单独使用它而无需以上内容
private LocationManager locationManager;
private android.location.LocationListener myLocationListener;
public void checkLocation() {
String serviceString = Context.LOCATION_SERVICE;
locationManager = (LocationManager) getSystemService(serviceString);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
myLocationListener = new android.location.LocationListener() {
public void onLocationChanged(Location locationListener) {
if (isGPSEnabled(YourActivityName.this)) {
if (locationListener != null) {
if (ActivityCompat.checkSelfPermission(YourActivityName.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(YourActivityName.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
if (locationManager != null) {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
} else if (isInternetConnected(YourActivityName.this)) {
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, myLocationListener);
}
isInternetConnected 方法
public static boolean isInternetConnected(Context ctx) {
ConnectivityManager connectivityMgr = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connectivityMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connectivityMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
// Check if wifi or mobile network is available or not. If any of them is
// available or connected then it will return true, otherwise false;
if (wifi != null) {
if (wifi.isConnected()) {
return true;
}
}
if (mobile != null) {
if (mobile.isConnected()) {
return true;
}
}
return false;
}
isGpsEnabled 方法
public boolean isGPSEnabled(Context mContext) {
LocationManager locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
注意 :现在不要混淆。这里提到了3种方式。
1.自动使用onLocationChanged
手动使用 onLocationChanged
使用 android.location.LocationListener()
添加了完整的实现(这不会帮助您学习,但可以帮助您获取数据。浏览这些行并通过搜索发生的事情来理解它们实际上)
关于安卓 :How to get Current Location in Longitude and latitude?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41310624/
这个问题来 self 布置的家庭作业。您可以将存储系统基于以下三种格式之一: DD MM SS.S DD MM.MMM DD.DDDDDD 您想通过使用尽可能少的字节来最大化可以存储的数据量。 我的解
我想使用经度和纬度在 map 上覆盖机场之间的大圆弧。 我已经可以从初始和最终坐标中获得距离和方位,但现在我需要在曲线上生成要绘制的点。 我想要的是一个公式,它采用起点、终点和距离,并返回起点和终点之
谷歌地图以十进制表示法为我提供了位置的纬度和经度,如下所示: 38.203655,-76.113281 如何将它们转换为坐标(度、分、秒) 最佳答案 38.203655 是度的十进制值。有 60 分钟
是否有函数/算法允许我输入纬度和地球的大致轨道位置,以便我可以确定太阳升起的时间? IE 在冬天它会显示太阳在遥远的北半球只升起几个小时。 我做了一些基本的谷歌搜索,但没有找到太多,所以我想我可能需要
我有一个经度和纬度,想将其转换为四元数,想知道如何做到这一点?我想使用它,因为我有一个应用程序可以将地球投影到一个球体上,我想从一个位置旋转到另一个位置。 最好的事物! 最佳答案 有一种不使用矩阵或向
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
我想弄清楚纬度/经度点是否包含在由代表地球上的点(也包括纬度/经度,按顺时针顺序)的顶点定义的多边形内。这对于可以映射到 2D lat/lon 空间的多边形来说是微不足道的。 这变得越来越困难的是圆形
我的代码输入总是放在其他部分。这意味着 {location} 为空。 有什么建议吗? locManager = (LocationManager)getSystemService(Context.LO
我正在开发一个 Angular 应用程序,它从 API 加载数据。 一切都按预期工作,除了定期在 Chrome console.log 中收到此错误 TypeError: Cannot read pr
假设我有成百上千个 GPS 坐标、纬度和经度构成一个国家的边界。 我还有我当前位置的纬度和经度。 如何确定(使用 C#,Windows10 UWP 编程)我的位置是否在某个国家/地区的边界内? 例
我正在开发一个 iPhone 应用程序,我想知道 MkMapView 上用户触摸的位置。 我有一个充满屏幕的 MKMapView。当用户触摸 map 时,我需要知道用户触摸的点的位置。这可能吗? 谢谢
我正在使用 Google Maps API 通过 google.maps.Polygon 可视化 map 上的一些标签。我用了这个转换器http://converter.mygeodata.eu/将它
当我点击 Button 时,我想将当前位置存储到数据库中。 位置已存储,但它正在接收 0.0,0.0 不知道我的代码中的错误在哪里我在这里发布我的完整代码,请帮助我解决这个问题。 获取当前位置 Get
如果一个经度对应的距离是纬度的函数,为什么在iOS MapKit中调用MKCoordinateSpanMake时要指定longitudeDelta和latitudeDelta?此外,我怎么知道正确的比
我有这个在 phpMyAdmin 中有效的查询 SELECT *, ( 6371 * acos ( cos ( radians(21.161908) ) * cos( radians(
我需要从 Main 类获取位置或纬度经度,但如果我获取位置它返回 null,如果我获取纬度和经度则返回 0.0,如下面的代码所示。尽量减少代码并使其尽可能清晰。 这是我需要从主类获取位置的服务类 pu
我被要求根据美国的州和城市生成一些人口统计报告(犯罪率、出生/死亡等)。我拥有所有人口统计数据(由我们的客户提供),但似乎找不到任何具有美国各州及其城市边界(阅读:LAT/LONG)的地方。 我们的数
我有一个 Google map ,我正在尝试从 map 正在获取的元素中获取 map 的纬度和经度。 所以我有了 map 的元素 我已经在 div 元素上设置了纬度和经度。现在,在我的 maps.j
我刚刚在我的 Laravel 应用程序中实现了一个经纬度。当我在 map 上添加地址时,它会在我选择地址时建议一个地址,它会返回经纬度。我只想在 map 上的鼠标位置上显示经纬度。那么如何识别这一点呢
如果我传递纬度和经度,作为响应,我需要 GMT 时区值。 例如: 纬度:21.7679 经度:78.8718 响应除外:GMT+05:30 我不想使用任何网络服务。 最佳答案 如果您不想使用网络服务,
我是一名优秀的程序员,十分优秀!