我最近开始研究一个包含GPS跟踪用户位置的android应用程序。 为此,我仔细阅读了Google的指南,以设置适用于Android的GoogleMaps API,并且(据我所知)我已完全理解我到达这里所采取的步骤,包括正确的API_KEY和用于Google地图调试版本的SHA1足迹。 包含的代码向Google API发送地图信息请求,并在加载后完全设置地图并在悉尼放置标记。 但这不会放置标记。或将地图界面移至悉尼。它只是显示地图,并且由于某种原因似乎每次都以非洲西海岸为中心。
这是我在Java Activity代码中获得的成就:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pkw__route__content__gps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
try {
mapFragment.getMapAsync(this);
}
catch(NullPointerException npe){
npe.printStackTrace();
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney, Australia, and move the camera.
LatLng sydney = new LatLng(-34, 151);
current = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
该片段如下:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="257dp"
android:layout_height="224dp"
android:layout_marginStart="72dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="72dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:context=".MapsActivity" />
我已在名为“ com.google.android.geo.API_KEY”的标记中将API密钥添加到清单中。出于明显的原因,我不会在这里发布它。
如前所述,地图正确初始化,但标记未放置并且moveCamera调用也未正确执行
编辑: 我认为这个问题需要更多背景知识,我在一个片段中使用了Map,该片段已集成到另一个活动中。 我之所以认为这很重要,是因为我试图通过一种意图来启动地图活动,在这种情况下,它将完全加载,放置标记并按照需要进行交互工作。因为所有这些都在onCreate()方法中。我该如何执行而不必调用活动并停止另一个活动?
答案 0 :(得分:0)
调用onMapReady(GoogleMap googleMap)
时不会加载地图。您必须等待OnMapLoadedCallback
事件。
您已为OnMapLoadedCallback
中的地图设置了onMapReady(GoogleMap googleMap)
,并设置了标记并将地图缩放到此回调中的位置。