如何正确设置Google Maps API和标记

时间:2019-06-05 14:26:51

标签: android google-maps-android-api-2

我最近开始研究一个包含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()方法中。我该如何执行而不必调用活动并停止另一个活动?

1 个答案:

答案 0 :(得分:0)

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

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