- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果他让圆圈,我试图从用户那里获取范围,但我无法在屏幕上获取范围或距离,它始终显示 0.0,并且不显示 toast 。
public class HomeActivity extends AppCompatActivity implements OnMapReadyCallback {
/**
* Request code for location permission request.
*
* @see #onRequestPermissionsResult(int, String[], int[])
*/
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;
/**
* Flag indicating whether a requested permission has been denied after
returning in
* {@link #onRequestPermissionsResult(int, String[], int[])}.
*/
private boolean mPermissionDenied = false;
LatLng latLng;
GoogleMap mMap;
SupportMapFragment supportMapFragment;
Marker marker;
//textview para mostrar el email, nombre, id del usuario conectado actualmente
TextView textViewEmail;
Context context;
double latitudeF, longitudeF;
TextView locationText;
TextView tiempoText;
TextView rangoText;
TextView longitudeText;
TextView latitudeText;
//Float distance;
Circle circle;
String dist;
private static final String TAG = "MyApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
supportMapFragment = (SupportMapFragment) getSupportFragmentManager
().findFragmentById(R.id.mapHomeUbication);
supportMapFragment.getMapAsync(this);
context = this;
// inicializamos el textview
textViewEmail = (TextView)findViewById(R.id.txt_EmailUsuario);
locationText = (TextView) findViewById(R.id.location);
longitudeText = (TextView) findViewById(R.id.longitude);
latitudeText = (TextView) findViewById(R.id.latitude);
tiempoText = (TextView) findViewById(R.id.tiempo);
rangoText = (TextView )findViewById(R.id.rango);
// cargamos el email desde sharedpreferences
SharedPreferences sharedPreferences = getSharedPreferences
(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
String email = sharedPreferences.getString(Config.EMAIL_SHARED_PREF, "No Disponible");
// mostramos el email actualmente logueado
textViewEmail.setText("Usuario : " + email);
onMapReady(mMap);
}
// function salir
private void logout() {
//Creating an alert dialog to confirm logout
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Esta seguro que quiere salir?");
alertDialogBuilder.setPositiveButton("Sí",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//Getting out sharedpreferences
SharedPreferences preferences = getSharedPreferences
(Config.SHARED_PREF_NAME,Context.MODE_PRIVATE);
//Getting editor
SharedPreferences.Editor editor = preferences.edit();
//Puting the value false for loggedin
editor.putBoolean(Config.LOGGEDIN_SHARED_PREF, false);
//Putting blank value to email
editor.putString(Config.EMAIL_SHARED_PREF, "");
//Saving the sharedpreferences
editor.commit();
//Starting login activity
Intent intent = new Intent(HomeActivity.this,
LoginActivity.class);
startActivity(intent);
}
});
alertDialogBuilder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
});
//Showing the alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Adding our menu to toolbar
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.log_OutMenu) {
//calling logout method when the logout button is clicked
logout();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
setUpMap();
}
/**
* This is where we can add markers or lines, add listeners or move the camera.
In this case, we
* just add a marker near Africa.
* <p/>
* This should only be called once.
*/
private void setUpMap() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission to access the location is missing.
PermissionUtils.requestPermission(this,
LOCATION_PERMISSION_REQUEST_CODE,
Manifest.permission.ACCESS_FINE_LOCATION, true);
} else if (mMap != null) {
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
mMap.setOnMyLocationChangeListener(myLocationChangeListener());
}
}
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener() {
return new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng latLngI = new LatLng(location.getLatitude(),
location.getLongitude());
longitudeF = location.getLongitude();
latitudeF = location.getLatitude();
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date(location.getTime());
String formatted = format.format(date);
tiempoText.setText(formatted.toString());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng
(latitudeF, longitudeF), 13));
MarkerOptions options = new MarkerOptions();
// Setting the position of the marker
options.position(new LatLng(latitudeF, longitudeF));
latLng = new LatLng(latitudeF, longitudeF);
drawMarkerWithCircle(latLng);
// Get back the mutable Circle
//circle = mMap.addCircle(circleOptions);
//getDistance(latLngI, latLng);
float[] distance = new float[2];
Location.distanceBetween( marker.getPosition().latitude,
marker.getPosition().longitude,
circle.getCenter().latitude, circle.getCenter
().longitude, distance);
if (distance[0] > circle.getRadius()) {
Toast.makeText(getBaseContext(), "fuera del rango: "
+ distance[0] + " radio: " + circle.getRadius(), Toast.LENGTH_LONG).show();
} else if (distance[0] < circle.getRadius()) {
Toast.makeText(getBaseContext(), "dentro del rango: "
+ distance[0] + " radio: " + circle.getRadius() , Toast.LENGTH_LONG).show();
}
//mMap.addMarker(new MarkerOptions().position(latLng));
//mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,8.0f));
locationText.setText("estas en [" + longitudeF + " ; " + latitudeF
+ "] ");
Log.d(TAG, "onMyLocationChange: 1" + distance);
}
};
}
private void drawMarkerWithCircle(LatLng position) {
double radiusInMeters = 300;
int strokeColor = 0xffff0000; //red outline
int shadeColor = 0x44ff0000; //opaque red fill
CircleOptions circleOptions = new CircleOptions().center(position).radius
(radiusInMeters).fillColor(shadeColor).strokeColor(strokeColor).strokeWidth(8);
circle = mMap.addCircle(circleOptions);
MarkerOptions markerOptions = new MarkerOptions().position(position);
marker = mMap.addMarker(markerOptions);
}
}
这是 logcat,它只显示一个数组,但如果移动标记,它看起来总是在变化
01-04 04:03:31.766 5838-5864/com.google.android.gms.persistent I/dalvikvm: Could not find method android.location.Location.isFromMockProvider, referenced from method com.google.android.location.util.am.e 01-04 04:03:31.766 5838-5864/com.google.android.gms.persistent W/dalvikvm: VFY: unable to resolve virtual method 995: Landroid/location/Location;.isFromMockProvider ()Z 01-04 04:03:31.766 5838-5864/com.google.android.gms.persistent D/dalvikvm: VFY: replacing opcode 0x6e at 0x0019 01-04 04:03:31.822 9501-9501/com.jhon.co.divi D/MyApp: onMyLocationChange: 1[F@53a75360 01-04 04:03:31.834 5838-5838/com.google.android.gms.persistent I/dalvikvm: Could not find method android.os.Looper.quitSafely, referenced from method com.google.android.gms.fitness.service.b.c.onDestroy 01-04 04:03:31.842 5838-5838/com.google.android.gms.persistent W/dalvikvm: VFY: unable to resolve virtual method 1351: Landroid/os/Looper;.quitSafely ()V 01-04 04:03:31.842 5838-5838/com.google.android.gms.persistent D/dalvikvm: VFY: replacing opcode 0x6e at 0x000f 01-04 04:03:31.854 5838-5838/com.google.android.gms.persistent V/GeofencerHelper: Initializing geofence's system cache. 01-04 04:03:31.862 5838-5858/com.google.android.gms.persistent D/GeofenceStateCache: Recovered 0 geofences. 01-04 04:03:31.886 5838-5838/com.google.android.gms.persistent I/dalvikvm: Could not find method android.os.Process.myUserHandle, referenced from method com.google.android.location.internal.server.o.f 01-04 04:03:31.886 5838-5838/com.google.android.gms.persistent W/dalvikvm: VFY: unable to resolve static method 1464: Landroid/os/Process;.myUserHandle ()Landroid/os/UserHandle; 01-04 04:03:31.886 5838-5838/com.google.android.gms.persistent D/dalvikvm: VFY: replacing opcode 0x71 at 0x00a7
它是这样的:
我不明白为什么它总是返回 0.0 并且不在 Location.distanceBetween
中进行验证。
最佳答案
postRef.addChildEventListener( new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (!dataSnapshot.exists()) {
// Toast.makeText(this, "if", Toast.LENGTH_SHORT ).show();
} else {
String latitude_Display = dataSnapshot
.child( "Pro_file" )
.child( "bpro_latitude" )
.getValue().toString();
String longitude_Display = dataSnapshot
.child( "Pro_file" )
.child( "bpro_longitude" )
.getValue().toString();
//Toast.makeText(this, "else " + latitude_Display + "\n" + longitude_Display, Toast.LENGTH_SHORT ).show();
String latLng = latitude_Display;
String latLng1 = longitude_Display;
double latitude_C = Double.parseDouble(latLng);
double longitude_C = Double.parseDouble(latLng1);
LocationManager locationManager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
Criteria crit = new Criteria();
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) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
Location location = locationManager.getLastKnownLocation( locationManager.getBestProvider( crit, false ) );
float[] distance = new float[2];
CircleOptions circleOptions_b = new CircleOptions();
circleOptions_b.center(new LatLng(location.getLatitude(), location.getLongitude()));
circleOptions_b.radius(100000);
Location.distanceBetween( latitude_C, longitude_C,
circleOptions_b.getCenter().latitude, circleOptions_b.getCenter().longitude, distance);
if( distance[0] > circleOptions_b.getRadius() ){
Toast.makeText(this, "the user Outside", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "the user Inside", Toast.LENGTH_LONG).show();
//do something
listUsers.add( dataSnapshot
.child("Pro_file")
.getValue(user.class) );
displayUsers(listUsers);
find_myAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
find_myAdapter.notifyDataSetChanged();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(this,"Canceled",Toast.LENGTH_SHORT).show();
find_myAdapter.notifyDataSetChanged();
}
});
}
关于android - Location.distanceBetween 获取不到距离、范围、米,无法识别latlong变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34584561/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!