안드로이드로 주변 편의점 검색하는 방법.

14883 단어 Android
이 문서는 제목과 같이 안드로이드에서 Google Place API를 사용하여 편의점을 검색하는 방법에 대해 설명합니다.

Google Places API 사용 준비


먼저 Google API Constore에서 Places API를 사용할 준비가 되어 있습니다.방문Google API Console.

위 화면의 경우 기존 항목 중에서 선택하거나 항목을 작성할 수 있습니다.
이 화면이 아니면 다음 내용을 건너뛰세요.

왼쪽 열에서 API 를 클릭합니다.

Places API 항목을 찾아 OFF에서 ON으로 스위치를 변경합니다.

왼쪽 열에서 인증 정보를 클릭합니다.

브라우저 키를 선택합니다.

텍스트 상자가 비어 있을 때 만들기 단추를 누르십시오.

브라우저 키가 생성되므로 API 키를 기억하십시오.나중에 사용.

Google Place API를 사용하여 편의점 검색(Result JSON 다운로드)


API 키가 있으면 Google Places API를 사용할 수 있습니다.API 사용 방법에 대한 자세한 설명
참조여기..이곳에서 주변 편의점을 조립해 검색해 달라는 요청이 들어왔다.
다음 코드의 YOURAPI_방금 API 키를 KEY 섹션에 추가하십시오.
MainActivity.java (부분 발췌)

    // ワーカースレッドにて

    // URL生成(現在地を元に)
    Location loc = LocationServices.FusedLocationApi.getLastLocation(sSelf.mGoogleApiClient);
    double lat = loc.getLatitude();
    double lng = loc.getLongitude();
    StringBuilder urlStrBuilder = new StringBuilder("https://maps.googleapis.com/maps/api/place/search/json");
    urlStrBuilder.append("?location=" + lat + "," + lng);
    urlStrBuilder.append("&sensor=true&rankby=distance&types=convenience_store&key=YOUR_API_KEY");
    URL u = new URL(urlStrBuilder.toString());

    // APIを叩いてJSONをダウンロード
    HttpURLConnection con = (HttpURLConnection) u.openConnection();
    con.setRequestMethod("GET");
    con.connect();
    is = new BufferedInputStream(con.getInputStream());

    String path = Environment.getExternalStorageDirectory() + "/tekitou/";
    String fileName = "tekitou.json";
    File dir = new File(path);
    dir.mkdirs(); 
    File outputFile = new File(dir, fileName);
    FileOutputStream fos = new FileOutputStream(outputFile);

    int bytesRead = -1;
    byte[] buffer = new byte[1024];
    while ((bytesRead = is.read(buffer)) != -1) {
        fos.write(buffer, 0, bytesRead);
    }
    fos.flush();
    fos.close();
    is.close();

상기 코드 (단말기의 외부 메모리)/tekitou/tekitou를 사용합니다.Response JSON을 json이라는 이름으로 저장합니다.

Result JSON의 퍼스


JSON이 다운로드할 수 있다면 나머지는 깨끗이 정리하는 것뿐이다.
자바의 JSON에 있는 퍼스는 귀찮아서 먼저 예를 들자.참고로 하다.
(외부 라이브러리 [잭슨 사용]. 잭슨의 사용 방법에 대한 자세한 내용은 부기 사항을 참조하십시오.)
MainActivity.java (부분 발췌)

   // ファイル読み込み
    FileInputStream fileInputStream;
    String path = Environment.getExternalStorageDirectory() + "/tekitou/";
    String fileName = "tekitou.json";
    File dir = new File(path);
    File inputFile = new File(dir, fileName);
    fileInputStream = new FileInputStream(inputFile);
    byte[] readBytes = new byte[fileInputStream.available()];
    fileInputStream.read(readBytes);
    String json = new String(readBytes);

    // JSONのパース with Jackson
    ObjectMapper mapper = new ObjectMapper();
    Object root = mapper.readValue(json, Object.class);
    Map<?,?> rootMap = mapper.readValue(json, Map.class);
    ArrayList nextArray = (ArrayList)rootMap.get("results");
    mLatlngList = new ArrayList<LatLngName>();

    for(int i =0; i < nextArray.size(); i++) {
        Map<?, ?> thirdMap = (Map<?, ?>) nextArray.get(i);
        Map<?, ?> forthMap = (Map<?, ?>) ((Map<?, ?>) thirdMap.get("geometry")).get("location");
        Double lat = (Double) forthMap.get("lat");
        Double lng = (Double) forthMap.get("lng");
        String name = (String)thirdMap.get("name");
        Log.i(TAG, "lat=" + lat + " lng=" + lng + " name=");
    }

그게 다야.수고하셨습니다.

좋은 웹페이지 즐겨찾기