我正在关注Google Dev guides中有关向应用添加地图的指南。我现在得到的唯一错误(无法解析类型)是带有此片段的MainActivity.java类中的getMapAsync。
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map); mapFragment.getMapAsync(this);
根据指南,我必须这样做:
注意:必须从主线程调用getMapAsync(),并且 回调将在主线程中执行。如果是Google Play服务 没有安装在用户的设备上,回调将不会 触发,直到用户安装Play服务。
我不知道如何从主线程调用getMapAsync。有点新的。有帮助吗?
答案 0 :(得分:2)
package your.app.name;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends Activity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
map.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Marker"));
}
//onCreateOptionsMenu: no changes
//onOptionsItemSelected: no changes
}
当然,总是假设您的activity_main.xml已包含正确的片段代码,AndroidManifest.xml也包含android.geo.API_KEY。
答案 1 :(得分:2)
您在this
方法中使用getMapAsync(this)
。在您的情况下,this
是活动,而getMapAsync
则需要MapFragment
的引用。传递实施MapFragment
的{{1}}的引用。