最初にgoogle static map apiを有効にし、APIキーを取得・設定する必要がある。 https://console.developers.google.com
下記のように表示したい地図情報をパラメタに含めたURLを作成し、地図画像を取得する。 下記コードのmContextは、コンストラクタで、引数で取得したContextを入れたprivate変数。
//地図画像を表示させるviewを取得 ImageView mapView = (ImageView) view.findViewById(R.id.img_map); //地図画像情報の作成 String lat = "35.039352"; String lng = "135.729265"; String url = "http://maps.google.com/maps/api/staticmap?center=" + lat + "," + lng + "&zoom=13&size=180x120&markers=" + lat + "%2C" + lng + "&sensor=false&key=" + mContext.getString(R.string.google_maps_key); //地図画像の取得・表示 new DownloadImageTask(mapView).execute(url);
DownloadImageTaskクラスは、下記。 (参考:http://stackoverflow.com/questions/5776851/load-image-from-url) 下記コードの、getCroppedBitmapは、Bitmap画像を角丸にする関数。
/** * URLから画像をダウンロードする */ private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = bmImage; } protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0]; Bitmap mIcon11 = null; try { InputStream in = new java.net.URL(urldisplay).openStream(); mIcon11 = BitmapFactory.decodeStream(in); mIcon11 = getCroppedBitmap(mIcon11); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return mIcon11; } protected void onPostExecute(Bitmap result) { bmImage.setImageBitmap(result); } }
getCroppedBitmap関数は、下記。 (参考:ImageView を 簡単に 角丸 にする)
/** * 画像を角丸にする * @param bitmap * @return */ public Bitmap getCroppedBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); final Rect rect = new Rect(0, 0, width, height); final RectF rectf = new RectF(0, 0, width, height); Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final Paint paint = new Paint(); paint.setAntiAlias(true); canvas.drawRoundRect(rectf, width / 10, height / 10, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; }