gpt4 book ai didi

android - 当我移动时如何更新我的位置并且它必须显示你是否在点 1 半径内?

转载 作者:行者123 更新时间:2023-11-29 19:39:19 24 4
gpt4 key购买 nike

我试过了,但它显示了我的当前位置,这是我第一次获得我是否在里面的信息。但是当我移出点 1 的半径时,它没有显示任何内容。

public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;


//drawing marker
LatLng pointOne = new LatLng(23.10,72.50847684);
mMap.addMarker(new MarkerOptions().position(pointOne).title("Point 1"));
mMap.addMarker(new MarkerOptions().position(new LatLng(0,0)).title("Point 2").snippet("N"));
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled(true);
// Get LocationManager object from System Service LOCATION_SERVICE
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Create a criteria object to retrieve provider
Criteria criteria = new Criteria();
// Get the name of the best provider
String provider = locationManager.getBestProvider(criteria, true);
// Get Current Location
Location myLocation = locationManager.getLastKnownLocation(provider);
//myLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);


double latitude = myLocation.getLatitude();
Log.e("latitude", String.valueOf(latitude));

// Get longitude of the current location
double longitude = myLocation.getLongitude();

// Create a LatLng object for the current location
LatLng pointTwo = new LatLng(latitude, longitude);

// Show the current location in Google Map
mMap.moveCamera(CameraUpdateFactory.newLatLng(pointTwo)); Log.e("location", String.valueOf(pointTwo));

//drawing overlay circle on marker
Circle circle = mMap.addCircle(new CircleOptions()
.center(pointOne)
.radius(5000)
.strokeColor(0x40FF0000)
.fillColor(0x35FF0000));

//for Checking marker is inside or not
float[] distance = new float[2];

Location.distanceBetween( pointTwo.latitude, pointTwo.longitude,
circle.getCenter().latitude, circle.getCenter().longitude, distance);

if( distance[0] > circle.getRadius() ){
Toast.makeText(getBaseContext(), "Outside", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getBaseContext(), "Inside", Toast.LENGTH_LONG).show();
}
pointToPosition(pointOne);
}

提前感谢您的帮助

最佳答案

您可以使用 Google GeoFencing API 围绕该位置绘制一个一定半径的虚拟圆。在用户进入/退出时,将触发一个事件,这将有助于您的事业。

现在您正在使用的 getLastKnownLocation() 可能会或可能不会提供位置值。 LocationManager 维护 GPS 位置数据,直到该数据在 8 分钟奇数后变得过时。在此之后,将再次冷启动,您手机中的 GPS 将尝试定位并返回结果。

如果这是冷启动,您还可能会得到一个 NullPointerException,因为您最后知道的位置已过时。

您可以尝试 requestLocationUpdates() ....如果 lastKnownLocation 返回 Null 结果...

这将导致 LocationManager 显式调用手机中的 GPS 以搜索当前位置...这将在回调函数 onLocationChanged 中提供结果...在这里您可以获取当前位置位置....

关于android - 当我移动时如何更新我的位置并且它必须显示你是否在点 1 半径内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com