如何正确设置谷歌地图API和标记



我最近开始开发一个安卓应用程序,其中包括对用户位置的GPS跟踪。 为此,我已经阅读了Google的Android版GoogleMaps API设置指南,并且(据我所知)完全理解了我到达这里所需的步骤,包括正确的API_KEY和用于谷歌地图调试版本的SHA1足迹。 包含的代码将地图信息请求发送到谷歌的API,并在加载时完全设置地图并在悉尼放置标记。 但它没有放置标记。或者将地图界面移至悉尼。它只是显示地图,并且出于某种原因,似乎每次都以非洲西海岸为中心。

以下是我在 Java 活动代码中取得的进展:

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" />  

我已将 API 密钥添加到名为"com.google.android.geo.API_KEY"的标签中的清单中。出于显而易见的原因,我不会在这里发布它。

如前所述,地图初始化正确,但标记未放置,移动相机调用也未正确执行

编辑: 我认为这个问题需要更多的背景故事,我正在一个片段中使用地图,该片段已集成到另一个活动中。 我认为这很重要的原因是因为我尝试通过意图启动地图活动,在这种情况下,它将完全加载、放置标记并按预期交互工作。因为所有这些都在onCreate()方法中。如何在不必调用活动并停止另一个活动的情况下执行此操作?

调用onMapReady(GoogleMap googleMap)时不会加载映射。您必须等待OnMapLoadedCallback事件。

您已在onMapReady(GoogleMap googleMap)中设置了地图OnMapLoadedCallback,并设置了标记并将地图缩放到此回调中的位置。

最新更新