Java 安卓-通过谷歌地图获取当前位置
我正在开发一个与谷歌地图相关的应用程序。我已经成功地完成了以下步骤Java 安卓-通过谷歌地图获取当前位置,java,android,google-maps,google-maps-android-api-2,Java,Android,Google Maps,Google Maps Android Api 2,我正在开发一个与谷歌地图相关的应用程序。我已经成功地完成了以下步骤 创建API密钥以访问Google地图 在我的应用程序中添加了Google Play服务库 添加了所需的权限 使用SupportMapFragment 添加了一个单独的类MyMap.java来操作映射 向此类传递了两个参数-主要活动的上下文和谷歌地图的对象 打开Wi-Fi和GPS并运行应用程序 在此之后,我得到了漂亮的外观和控制地图 MyMap.java public class MyMap implements Connecti
SupportMapFragment
MyMap.java
来操作映射主要活动的上下文和谷歌地图的对象
public class MyMap implements ConnectionCallbacks, OnConnectionFailedListener {
private Context context;
private GoogleMap map;
private GoogleApiClient client = null;
public MyMap(Context context, GoogleMap map) {
this.context = context;
this.map = map;
client = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onConnected(Bundle arg0) {
Toast.makeText(context, "Connected", 1).show();
Location mLastLocation = LocationServices.FusedLocationApi
.getLastLocation(client);
if (mLastLocation != null) {
Toast.makeText(
context,
String.valueOf(mLastLocation.getLatitude()) + ","
+ String.valueOf(mLastLocation.getLongitude()), 1)
.show();
}
}
@Override
public void onConnectionSuspended(int arg0) {
// TODO Auto-generated method stub
}
}
问题
在上面的课程中,我想为当前位置干杯。但这并不是在敬酒。至少我需要在onConnected
事件我的实现有什么问题吗
提前感谢。您似乎从来都不是您的客户,因此如果调用onConnected
将是一个真正的惊喜:)
您可以使用
client = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
但要让客户做一些事情,您必须添加:
client.connect();
你似乎从来没有见过你的客户,所以如果调用onConnected
,那将是一个真正的惊喜:)
您可以使用
client = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
但要让客户做一些事情,您必须添加:
client.connect();
getLastLocation()只提供一次位置。要获得定期的位置更新,需要重写onLocationChanged()方法。您可以得到这个getLastLocation()只会给出一次位置。要获得定期的位置更新,需要重写onLocationChanged()方法。你可以得到这个我发现的最好的方法是简单地实施你的活动,如下所示:
public class MapActivity extends Activity implements GoogleMap.OnMyLocationChangeListener
和覆盖方法
@Override
public void onMyLocationChange(Location location) {
mMap.addMarker(new MarkerOptions().position(location).icon(
BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
不要忘记mMap.setMyLocationEnabled(true)
和mMap.setOnMyLocationChangeListener(此)
就这些强>
此外,您还可以检查地图是否可用,如下所示:
public boolean checkMapsAvailable() {
int isAvailable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (isAvailable == ConnectionResult.SUCCESS) {
return true;
} else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) {
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable, this, 9001);
dialog.show();
} else {
Constants.showToast(Constants.ALERT_GOOGLEPLAY_CONNECTION);
}
return false;
}
希望这能有所帮助。我发现最好的方法是简单地执行以下活动:
public class MapActivity extends Activity implements GoogleMap.OnMyLocationChangeListener
和覆盖方法
@Override
public void onMyLocationChange(Location location) {
mMap.addMarker(new MarkerOptions().position(location).icon(
BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
不要忘记mMap.setMyLocationEnabled(true)
和mMap.setOnMyLocationChangeListener(此)
就这些强>
此外,您还可以检查地图是否可用,如下所示:
public boolean checkMapsAvailable() {
int isAvailable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (isAvailable == ConnectionResult.SUCCESS) {
return true;
} else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) {
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable, this, 9001);
dialog.show();
} else {
Constants.showToast(Constants.ALERT_GOOGLEPLAY_CONNECTION);
}
return false;
}
希望这能有所帮助。您是如何创建MyMap的?我的问题是context
,但我们看不到您发送给它的是什么…我从我的主要活动中发送“这个”?您是如何创建我的地图的?我的问题是context
,但我们看不到您向它发送了什么…我从我的主要活动中发送了“这封信”,非常感谢。我对我的'cllient'对象使用了connect()方法。它工作得很好。再次感谢。到时候你可以接受我的回答。玩得开心。嘿,非常感谢。我对我的'cllient'对象使用了connect()方法。它工作得很好。再次感谢。到时候你可以接受我的回答。玩得开心,谢谢。我也在找这个。谢谢。我也在找这个。