我正在开发与Google地图相关的应用。我已成功完成以下步骤。
SupportMapFragment
MyMap.java
来操作地图Context
的主要活动和对象的GoogleMap
在此之后,我得到了具有漂亮外观和控件的地图。
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
事件。我的实施有什么问题吗?
提前致谢。
答案 0 :(得分:3)
你似乎永远不会connect你的客户,所以如果onConnected
被调用,那将是一个真正的惊喜:)
您使用
创建客户端 client = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
但是要让客户做一些必须添加的内容:
client.connect();
答案 1 :(得分:1)
getLastLocation()只会给位置一次。要获得定期位置更新,您需要覆盖onLocationChanged()方法。你可以得到这个Link
答案 2 :(得分:1)
最好的方式就是这样简单的实施活动:
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)));
}
并且不要忘记map init方法中的mMap.setMyLocationEnabled(true);
和mMap.setOnMyLocationChangeListener(this);
全部!
另外,你可以点击这里查看地图:
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;
}
希望这有帮助。