无地图渲染 Android Studio

时间:2021-03-15 15:56:58

标签: android android-studio google-maps

社区! 我正在制作一个演示来使用 Google API 显示经度和纬度。 它工作正常,直到我将项目复制到另一个目录。现在地图不会渲染,而是显示一个底部带有谷歌徽标的空白页面。

知道我做错了什么吗?这可能与 API 密钥有关吗? 提前致谢!

代码如下: 主要和唯一活动:MainActivity

docker exec container-id rails db:setup

2º 片段:MapFragment

 public class MainActivity extends AppCompatActivity {


    Fragment currentFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        currentFragment = new WelcomeFragment();
        changeFragmentTo(currentFragment);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()){
            case R.id.menu_welcome:
                currentFragment= new WelcomeFragment();
                break;
            case R.id.menu_map:
                currentFragment= new MapFragment();
                break;
        }
        changeFragmentTo(currentFragment);
        return super.onOptionsItemSelected(item);
    }

    private void changeFragmentTo(Fragment fragment){
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, fragment).commit();
    }
}

片段映射:

public class MapFragment extends Fragment implements OnMapReadyCallback,  GoogleMap.OnMarkerDragListener{

    private View rootView;
    private GoogleMap gMap;
    private  MapView mapView;

    private Geocoder geocoder;
    private List<Address> addresses; //object

    public MapFragment() {
        // Required empty public constructor

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        rootView =   inflater.inflate(R.layout.fragment_map, container, false);
        // Inflate the layout for this fragment
        return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        mapView = (MapView) rootView.findViewById(R.id.map);
        if (mapView !=null){
            mapView.onCreate(null);
            mapView.onResume();
            mapView.getMapAsync(this);
        }
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {

        gMap = googleMap;
        LatLng pinto = new LatLng(40.24717072159241, -3.6988735198974614);

        CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);

        gMap.addMarker(new MarkerOptions().position(pinto).title("Marker in Pinto").draggable(true));
        gMap.moveCamera(CameraUpdateFactory.newLatLng(pinto));
        gMap.animateCamera(zoom);

        //get information of addresses when we drag the marker
        gMap.setOnMarkerDragListener(this);

        geocoder = new Geocoder(getContext(), Locale.getDefault()); //object that gets the location

    }

    @Override
    public void onMarkerDragStart(Marker marker) {

    }

    @Override
    public void onMarkerDrag(Marker marker) {

    }

    @Override
    public void onMarkerDragEnd(Marker marker) {
        double latitude = marker.getPosition().latitude;
        double longitude = marker.getPosition().longitude;


        try {
            addresses=  geocoder.getFromLocation(latitude,longitude,1); //limit 5
        } catch (IOException e) {
            e.printStackTrace();
        }

        String address = addresses.get(0).getAddressLine(0);
        String city =  addresses.get(0).getLocality();
        String state =  addresses.get(0).getAdminArea();
        String country=  addresses.get(0).getCountryName();
        String postalCode=  addresses.get(0).getPostalCode();

        Toast.makeText(getContext(), "Address:" + address + '\n'+
                        "City:" + city + '\n' +
                        "State:" + state + '\n'+
                        "Country:" + country + '\n'+
                        "Postal Code:" + postalCode + '\n'
                , Toast.LENGTH_LONG).show();

    }

}

0 个答案:

没有答案
相关问题