【问题标题】:How to setup Google Maps API and Markers correctly如何正确设置 Google Maps API 和标记
【发布时间】:2019-06-07 05:05:46
【问题描述】:

我最近开始开发一个包含 GPS 跟踪用户位置的 Android 应用程序。 为此,我已经阅读了 Google 设置 Android 版 GoogleMaps API 的指南,并且(据我所知)我完全理解了我到达这里所采取的步骤,包括正确的 API_KEY 和 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 调用也未正确执行

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 2012-02-19
      • 2018-06-16
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      相关资源
      最近更新 更多