我已经通过了地学教程,我有疑问在脑海中。
是否需要持续监视用户的位置?
或者,当转换已经治愈时,添加Geofence的LocationClient会自动触发吗?
这似乎是一个显而易见的问题,但本教程从未提到任何有关从位置管理器请求位置更新的内容。
发布于 2019-08-05 13:25:49
地理位置要求您持续监视用户的位置吗?- NO,它不要求您监视位置。
只有要求
或者,当转换发生时,添加Geofence的LocationClient会自动触发吗?-,是,,它将被触发。确保设置了正确的过期时间戳,并且位置适配器位于上。应用程序不需要知道当前位置
可选
此外,你可以抓住正确的地理位置错误来知道,为什么你的地理围栏没有被触发:
GEOFENCE_NOT_AVAILABLE Geofence服务现在不可用。这通常是因为用户在设置>位置访问中关闭了位置访问。
恒定值: 1000
GEOFENCE_TOO_MANY_GEOFENCES你的应用程序已经注册了100多个地理位置。删除未使用的,然后添加新的地理位置。
恒定值: 1001
GEOFENCE_TOO_MANY_PENDING_INTENTS您已经为addGeofences(GoogleApiClient、GeofencingRequest、PendingIntent)调用提供了超过5个不同的PendingIntents。
恒定值: 1002
发布于 2014-01-23 11:36:54
public class MainActivity extends FragmentActivity implements
OnMarkerDragListener {
private GoogleMap googleMap;
private int distance;
private SupportMapFragment mapFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map));
googleMap = mapFragment.getMap();
googleMap.setOnMarkerDragListener(this);
distance = 100;
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
26.788707, 75.828108), 15));
createGeofence(26.788707, 75.828108, distance, "CIRCLE", "GEOFENCE");
}
private void createGeofence(double latitude, double longitude, int radius,
String geofenceType, String title) {
Marker stopMarker = googleMap.addMarker(new MarkerOptions()
.draggable(true)
.position(new LatLng(latitude, longitude))
.title(title)
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.stop_marker)));
googleMap.addCircle(new CircleOptions()
.center(new LatLng(latitude, longitude)).radius(radius)
.fillColor(Color.parseColor("#B2A9F6")));
}
@Override
public void onMarkerDrag(Marker marker) {
}
@Override
public void onMarkerDragEnd(Marker marker) {
LatLng dragPosition = marker.getPosition();
double dragLat = dragPosition.latitude;
double dragLong = dragPosition.longitude;
googleMap.clear();
createGeofence(dragLat, dragLong, distance, "CIRCLE", "GEOFENCE");
Toast.makeText(
MainActivity.this,
"onMarkerDragEnd dragLat :" + dragLat + " dragLong :"
+ dragLong, Toast.LENGTH_SHORT).show();
Log.i("info", "on drag end :" + dragLat + " dragLong :" + dragLong);
}
@Override
public void onMarkerDragStart(Marker marker) {
}
main .xml
< ?xml version="1.0" encoding="utf-8"?>
< RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
< fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
< /RelativeLayout>https://stackoverflow.com/questions/21306901
复制相似问题