【问题标题】:Android Marker does not work安卓标记不起作用
【发布时间】:2015-12-16 09:53:34
【问题描述】:

我的标记不起作用。我不知道为什么。 标记在 onMapReady 方法中没有任何工作。在 onCreate 中工作。但它在 else 运行。它的打印“hata1”和“hata2”。 当我创建新项目时,不会从 /sdk/extras/../google_play/services 导入。我收到“找不到文件/settings.jar”错误。所以我也不想要新项目。

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
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.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import java.util.*;
import android.os.Bundle;
import com.google.android.*;
import android.graphics.*;
import android.view.View;
import android.widget.Toast;


public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{

    private GoogleMap myMap;


    public static final LatLng PERTH = new LatLng(36.57, 36.17);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        Toast.makeText(getApplicationContext(),"hata1",Toast.LENGTH_SHORT).show();
        if(myMap!=null) {
            Marker marker = myMap.addMarker(new MarkerOptions()
                    .position(PERTH)
                    .title("Marker").visible(true));
            marker.showInfoWindow();

            myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(PERTH, 13));
        }
        else
        {
            Toast.makeText(getApplicationContext(),"hata2",Toast.LENGTH_SHORT).show();
        }

    }


    @Override


    public void onMapReady(GoogleMap myMap) {

    }

}

【问题讨论】:

    标签: android google-maps marker


    【解决方案1】:
    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
    
    private GoogleMap myMap;
    
    
    public static final LatLng PERTH = new LatLng(36.57, 36.17);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        getHandleOnMap();
    }
    private void getHandleOnMap()
    {
        SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
                .findFragmentById(R.id.mapFragment);
        mapFragment.getMapAsync(this);
    }
    @Override
    public void onMapReady(GoogleMap myMap) {
    googleMap.addMarker(new MarkerOptions()
                .position(PERTH)
                .title("Hello"));
    }
    

    }

    如果您遇到任何崩溃或错误,请分享详细日志

    【讨论】:

    • onMapReady 方法没有调用?
    • 在 oncreate 中试试这个。您需要从 oncreate 调用 getMapSync
    • 当我尝试 oncreate 方法时应用程序停止
    • 12-16 12:22:03.701 21361-21361/com.example.samsun.myapplication E/AndroidRuntime: 在 com.example.samsun.myapplication.MapsActivity.getHandleOnMap(MapsActivity.java:39) 12-16 12:22:03.701 21361-21361/com.example.samsun.myapplication E/AndroidRuntime: at com.example.samsun.myapplication.MapsActivity.onCreate(MapsActivity.java:33)
    • 应用程序已停止
    【解决方案2】:

    你可以试试这个方法吗?因为一旦您的GoogleMap 准备就绪,onMapReady() 就会自动自动运行,并且您可以使用 GoogleMap 对象。

    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
    
    private GoogleMap myMap;
    
    public static final LatLng PERTH = new LatLng(36.57, 36.17);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
    
        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    
    
    @Override
    public void onMapReady(GoogleMap myMap) {
        Toast.makeText(getApplicationContext(),"hata1",Toast.LENGTH_SHORT).show();
        if(myMap!=null) {
            Marker marker = myMap.addMarker(new MarkerOptions()
                    .position(PERTH)
                    .title("Marker").visible(true));
            marker.showInfoWindow();
    
            myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(PERTH, 13));
        }
        else
        {
            Toast.makeText(getApplicationContext(),"hata2",Toast.LENGTH_SHORT).show();
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 2019-02-04
      • 2020-07-02
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 2013-01-23
      • 1970-01-01
      相关资源
      最近更新 更多