0

Googleマップv2を使用して、GPSまたはインターネットを使用してマップをロードしたいのですが、インターネットだけで実行できます。

アプリケーションをインターネットに接続すると、マップは正常に読み込まれますが、GPS だけを使用すると、携帯電話とアプリで GPS を既に有効にしているにもかかわらず、マップが表示されません。

これは私のコードです。最初に自分の場所を取得してから、マップをロードします

setContentView(R.layout.google_map_layout);
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        boolean enabled = locationManager
                .isProviderEnabled(LocationManager.GPS_PROVIDER);
        if (!enabled) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent);
        } else {

            Criteria criteria = new Criteria();
            provider = locationManager.getBestProvider(criteria, false);
            Location location = locationManager.getLastKnownLocation(provider);
            if (location != null) {
                Toast.makeText(RestaurantsNearBy.this,
                        location.getLatitude() + "", Toast.LENGTH_LONG).show();
                LatLng currentLocation = new LatLng(location.getLatitude(),
                        location.getLongitude());
                new getRestaurantNearBy().execute(currentLocation.latitude,
                        currentLocation.longitude);

                map = ((SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.map)).getMap();

                map.setInfoWindowAdapter(new InfoWindowAdapter() {

                    private final View window = getLayoutInflater().inflate(
                            R.layout.restaurant_marker, null);

                    @Override
                    public View getInfoWindow(Marker marker) {
                        return null;
                    }

                    @Override
                    public View getInfoContents(Marker marker) {
                        TextView tv_title = ((TextView) window
                                .findViewById(R.id.tv_title));
                        TextView tv_description = ((TextView) window
                                .findViewById(R.id.tv_description));
                        ImageView iv_image = ((ImageView) window
                                .findViewById(R.id.iv_image));
                        AddressMap oneAddres = markersMap.get(marker);
                        tv_title.setText(oneAddres.getRestaurant().getName());
                        tv_description.setText(oneAddres.getDescription());
                        Restaurant r = markersMap.get(marker).getRestaurant();
                        if (Restaurant.getRestaurant(r.getID()) != null) {
                            if (Restaurant.getRestaurant(r.getID()).getImage() != null) {
                                iv_image.setImageBitmap(Restaurant
                                        .getRestaurant(r.getID()).getImage());
                            } else {
                                try {
                                    iv_image.setImageBitmap(r
                                            .getImageFromWebService());
                                } catch (Exception e) {
                                    iv_image.setImageResource(R.drawable.unknown);
                                }
                            }
                        } else {
                            iv_image.setImageBitmap(r.getImageFromWebService());
                        }
                        return window;
                    }
                });

                map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

                    @Override
                    public void onInfoWindowClick(Marker marker) {
                        final AddressMap oneAddress = markersMap.get(marker);
                        AlertDialog alertDialog3 = new AlertDialog.Builder(
                                RestaurantsNearBy.this).create();
                        alertDialog3.setTitle("Order !");
                        alertDialog3
                                .setMessage("Do you want to order from the restaurant "
                                        + oneAddress.getRestaurant().getName());
                        alertDialog3.setIcon(R.drawable.more_information);
                        alertDialog3.setButton("Yes",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        Basket.setRestaurant(oneAddress
                                                .getRestaurant());
                                        dialog.dismiss();
                                        Intent addAddressIntent = new Intent(
                                                RestaurantsNearBy.this,
                                                OrderMeal.class);
                                        startActivity(addAddressIntent);
                                    }

                                });
                        alertDialog3.setButton2("No",
                                new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        dialog.dismiss();
                                    }
                                });
                        alertDialog3.show();

                    }
                });

                // Move the camera instantly to hamburg with a zoom of 15.
                map.moveCamera(CameraUpdateFactory.newLatLngZoom(
                        currentLocation, 15));

                // Zoom in, animating the camera.
                map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
                Log.d("Provider ", provider + " has been selected.");
                onLocationChanged(location);
            } else {
                Toast.makeText(RestaurantsNearBy.this, "Sorry we couldn't define your location",
                        Toast.LENGTH_SHORT).show();
            }
        }
4

2 に答える 2

1

You should use proper tags, Google Maps can be found on loads of platforms, and you have a question about the android versions, so at least add Android tag.

On the question: Google Maps NEEDS active internet connection, when you first load the maps. V2 does some decent caching on your SD card (sometimes a bit excessive too), allowing you to later check thoose already loaded maps offline, but the principle is: no active internet connection, no Google Maps.

ps: GPS is NOT an internet connection.

于 2013-06-19T08:54:31.900 に答える