如何启用谷歌地图服务

时间:2014-06-23 10:45:26

标签: android geocoding

我遇到geocoder.ispresent()始终返回false的问题。我用谷歌搜索解决方案,发现谷歌地图服务没有启用。我们如何才能启用该服务?谁能指导我?

package com.incv.mobile.freejscf;

import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.app.Application;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;


public class MyApplication extends Application implements LocationListener {
    double latitude = 0;
    double longitude = 0;
    @Override
    public void onCreate() {
        super.onCreate();       
        Location mLocation = null;
        if (Geocoder.isPresent()) {
                (new GetAddressTask(this)).execute(mLocation);
            }
        else{
            Log.e("Not", "Geocoder is not present");
        }

    }

    private class GetAddressTask extends
    AsyncTask<Location, Void, String> {
    Context mContext;
    public GetAddressTask(Context context) {
        super();
        mContext = context;
    }

    /**
     * Get a Geocoder instance, get the latitude and longitude
     * look up the address, and return it
     *
     * @params params One or more Location objects
     * @return A string containing the address of the current
     * location, or an empty string if no address can be found,
     * or an error message
     */
    @Override
    protected String doInBackground(Location... params) {
        Geocoder geocoder =
                new Geocoder(mContext, Locale.getDefault());
        // Get the current location from the input parameter list
        Location loc = params[0];
        // Create a list to contain the result address
        List<Address> addresses = null;
        try {
            /*
             * Return 1 address.
             */
            addresses = geocoder.getFromLocation(loc.getLatitude(),
                    loc.getLongitude(), 1);
        } catch (IOException e1) {
        Log.e("LocationSampleActivity",
                "IO Exception in getFromLocation()");
        e1.printStackTrace();
        return ("IO Exception trying to get address");
        } catch (IllegalArgumentException e2) {
        // Error message to post in the log
        String errorString = "Illegal arguments " +
                Double.toString(loc.getLatitude()) +
                " , " +
                Double.toString(loc.getLongitude()) +
                " passed to address service";
        Log.e("LocationSampleActivity", errorString);
        e2.printStackTrace();
        return errorString;
        }
        // If the reverse geocode returned an address
        if (addresses != null && addresses.size() > 0) {
            // Get the first address
            Address address = addresses.get(0);
            /*
             * Format the first line of address (if available),
             * city, and country name.
             */
            String addressText = String.format(
                    "%s, %s, %s",
                    // If there's a street address, add it
                    address.getMaxAddressLineIndex() > 0 ?
                            address.getAddressLine(0) : "",
                    // Locality is usually a city
                    address.getLocality(),
                    // The country of the address
                    address.getCountryName());
            // Return the text
            return addressText;
        } else {
            return "No address found";
        }
    }
    protected void onPostExecute(String address) {
       // mAddress.setText(address);
        Log.e("Address", address.toString());
    }

    }
    public void getAddress(View v) {
    // Ensure that a Geocoder services is available

    }
    @Override
    public void onLocationChanged(Location arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }
}

在上面的代码中首先onCreate methid得到执行。但它总是进入其他部分。这意味着GeoCoder.isProvider()返回false。

1 个答案:

答案 0 :(得分:0)

只需按照开发人员指南在Android应用中设置地图即可。 以下是快速指南

  1. 从android sdk manager下载google playservices
  2. 将此添加到eclipse并将其添加为项目的库
  3. 在Google控制台
  4. 中添加密钥和其他先决条件
  5. 在AndroidManifest.xml中嵌入必要的权限和密钥