Java 贴图片段直接将相机移动到当前位置
我在地图片段中使用place picker生成代码以显示附近的位置,但它无法直接将相机移动到我当前的手机位置,我必须使用Java 贴图片段直接将相机移动到当前位置,java,android,google-maps,Java,Android,Google Maps,我在地图片段中使用place picker生成代码以显示附近的位置,但它无法直接将相机移动到我当前的手机位置,我必须使用center=new lat long手动输入lat long,但我希望它直接根据手机位置移动 @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); client = new Goo
center=new lat long
手动输入lat long,但我希望它直接根据手机位置移动
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
client = new GoogleApiClient.Builder(getContext())
.addApi(LocationServices.API)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(@Nullable Bundle bundle) {
if (isResumed()) {
try {
LocationRequest request = new LocationRequest();
request.setInterval(1000);
request.setSmallestDisplacement(1);
LocationServices.FusedLocationApi.requestLocationUpdates(client, request, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
LatLng myLatLong = new LatLng(location.getLatitude(),
location.getLongitude());
CameraPosition cameraPosition = new CameraPosition.Builder().target(myLatLong).zoom(17).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
});
} catch (SecurityException ex) {
}
}
}
@Override
public void onConnectionSuspended(int i) {
}
}).build();
client.connect();
}
如何使相机直接移动到我的位置??谢谢你的帮助
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
MapFragment mapFragment;
GoogleMap gMap;
MarkerOptions markerOptions = new MarkerOptions();
CameraPosition cameraPosition;
LatLng center, latLng;
String title;
public static final String ID = "id";
public static final String TITLE = "name";
public static final String LAT = "lat";
public static final String LNG = "lng";
private String url = "http://192.168.0.12/myjson/markers.php";
String tag_json_obj = "json_obj_req";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
gMap = googleMap;
center = new LatLng(-6.337800, 106.698990);
cameraPosition = new CameraPosition.Builder().target(center).zoom(10).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
getMarkers();
}
private void addMarker(LatLng latlng, final String title) {
markerOptions.position(latlng);
markerOptions.title(title);
gMap.addMarker(markerOptions);
gMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Toast.makeText(getApplicationContext(), marker.getTitle(), Toast.LENGTH_SHORT).show();
}
});
}
// Fungsi get JSON marker
private void getMarkers() {
StringRequest strReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response: ", response.toString());
try {
JSONObject jObj = new JSONObject(response);
String getObject = jObj.getString("wisata");
JSONArray jsonArray = new JSONArray(getObject);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
title = jsonObject.getString(TITLE);
latLng = new LatLng(Double.parseDouble(jsonObject.getString(LAT)), Double.parseDouble(jsonObject.getString(LNG)));
// Menambah data marker untuk di tampilkan ke google map
addMarker(latLng, title);
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error: ", error.getMessage());
Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
}
}
public类MainActivity扩展了FragmentActivity在MapreadyCallback上的实现{
MapFragment;
谷歌地图gMap;
MarkerOptions MarkerOptions=新MarkerOptions();
摄像定位摄像定位;
拉特宁中心,拉特宁;
字符串标题;
公共静态最终字符串ID=“ID”;
公共静态最终字符串TITLE=“name”;
公共静态最终字符串LAT=“LAT”;
公共静态最终管柱LNG=“LNG”;
专用字符串url=”http://192.168.0.12/myjson/markers.php";
字符串tag_json_obj=“json_obj_req”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapFragment=(mapFragment)getFragmentManager().findFragmentById(R.id.map);
getMapAsync(这个);
}
@凌驾
4月1日公开作废(谷歌地图谷歌地图){
gMap=谷歌地图;
中心=新车床(-6.337800,106.698990);
cameraPosition=新建cameraPosition.Builder().target(中心).zoom(10.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
getMarkers();
}
专用void addMarker(LatLng LatLng,最终字符串标题){
标记选项位置(板条);
标记选项。标题(标题);
gMap.addMarker(标记选项);
gMap.setOnInfoWindowClickListener(新的GoogleMap.OnInfoWindowClickListener(){
@凌驾
公用无效信息窗口单击(标记){
Toast.makeText(getApplicationContext(),marker.getTitle(),Toast.LENGTH_SHORT.show();
}
});
}
//Fungsi-get-JSON标记
私有void getMarkers(){
StringRequest strReq=newStringRequest(Request.Method.POST,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Log.e(“Response:,Response.toString());
试一试{
JSONObject jObj=新的JSONObject(响应);
字符串getObject=jObj.getString(“wisata”);
JSONArray JSONArray=新的JSONArray(getObject);
for(int i=0;i
首先,您需要知道当前位置。为此,您必须使用GoogleAppClient
。然后,您可以使用CameraPosition
将地图运行到该位置
下面的代码首先连接到GoogleAPI客户端。在连接回调中,它请求当前位置1秒。最后,它会设置动画以映射到最后一个可用位置
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
client = new GoogleApiClient.Builder(getContext())
.addApi(LocationServices.API)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(@Nullable Bundle bundle) {
if (isResumed()) {
try {
LocationRequest request = new LocationRequest();
request.setInterval(1000);
request.setSmallestDisplacement(1);
LocationServices.FusedLocationApi.requestLocationUpdates(client, request, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
LatLng myLatLong = new LatLng(location.getLatitude(),
location.getLongitude());
CameraPosition cameraPosition = new CameraPosition.Builder().target(myLatLong).zoom(17).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
});
} catch (SecurityException ex) {
}
}
}
@Override
public void onConnectionSuspended(int i) {
}
}).build();
client.connect();
}
我可以在片段活动中使用它吗?只需在片段或活动的`onCreate()`内部输入。