From 11ea004d309d15c22704a1f4c17764f4a4ef5fe6 Mon Sep 17 00:00:00 2001 From: oKikuti Date: Wed, 3 Jul 2024 14:13:06 +0900 Subject: [PATCH] =?UTF-8?q?=E8=8F=8A=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 地図に名前と、緯度経度を入れて実行できるようにしました。 良ければ確認お願いします。 --- .idea/misc.xml | 1 - .../java/com/example/oplogy/MainActivity.java | 2 + .../main/java/com/example/oplogy/Maps.java | 100 ++++++++++++------ 3 files changed, 70 insertions(+), 33 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ad17cb..8978d23 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 2a44ee9..7228bb7 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -168,12 +168,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe @Override public void onClick(DialogInterface dialog, int which) { classId = CreateUUID.generateUUID(classIdList); + imageUuid.setImageResource(R.drawable.checked_image); Toast.makeText(MainActivity.this, "クラスID: " + classId, Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + imageUuid.setImageResource(R.drawable.checked_image); Log.d("DialogNO", "DialogでNoが選ばれました"); } }); diff --git a/app/src/main/java/com/example/oplogy/Maps.java b/app/src/main/java/com/example/oplogy/Maps.java index f5ae31a..5c245a3 100644 --- a/app/src/main/java/com/example/oplogy/Maps.java +++ b/app/src/main/java/com/example/oplogy/Maps.java @@ -1,7 +1,9 @@ package com.example.oplogy; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; @@ -14,6 +16,8 @@ import androidx.fragment.app.FragmentActivity; import com.example.oplogy.databinding.MapsBinding; +import java.util.Random; + public class Maps extends FragmentActivity implements View.OnClickListener { private WebView webView; @@ -37,53 +41,85 @@ public class Maps extends FragmentActivity implements View.OnClickListener { webSettings.setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); - // ここにデータを入れておいてください、処理は[/]で区切っています(緯度と経度で入れているので、そこで一度試してください) - loadMapInWebView("35.09050879999539,136.87845379325216,名古屋港水族館/35.091950716938875,136.8826598363985,2番目/35.09273643623442,136.88154941341296,3番目"); + // 初期の緯度経度と名前のセットをロード + loadMapInWebView("35.09050879999539,136.87845379325216/35.091950716938875,136.8826598363985/35.09273643623442,136.88154941341296"); + loadName("名古屋港水族館/2番目/3番目"); } // WebViewの処理です(Mapの中の処理をやっています) private void loadMapInWebView(String locations) { - // 区切ることで、追加の地点を入れて、最終地点にピンを打ってある状態です - String[] locArray = locations.split("/"); + try { + String[] locArray = locations.split("/"); + StringBuilder urlBuilder = new StringBuilder("https://www.google.com/maps/dir/?api=1&travelmode=driving"); - // 各地点の名前をScrollViewに表示 - for (String loc : locArray) { - String[] parts = loc.split(","); - if (parts.length == 3) { - addLocationToScrollView(parts[2]); - } - } + if (locArray.length > 0) { + urlBuilder.append("&origin=").append(locArray[0]); - // URLで経路案内(車)での表示をしています - StringBuilder urlBuilder = new StringBuilder("https://www.google.com/maps/dir/?api=1&travelmode=driving"); + if (locArray.length > 1) { + urlBuilder.append("&destination=").append(locArray[locArray.length - 1]); - if (locArray.length > 0) { - urlBuilder.append("&origin=").append(locArray[0]); - - if (locArray.length > 1) { - urlBuilder.append("&destination=").append(locArray[locArray.length - 1]); - - if (locArray.length > 2) { - urlBuilder.append("&waypoints="); - for (int i = 1; i < locArray.length - 1; i++) { - urlBuilder.append(locArray[i]); - if (i < locArray.length - 2) { - urlBuilder.append("|"); + if (locArray.length > 2) { + urlBuilder.append("&waypoints="); + for (int i = 1; i < locArray.length - 1; i++) { + urlBuilder.append(locArray[i]); + if (i < locArray.length - 2) { + urlBuilder.append("|"); + } } } } } - } - webView.loadUrl(urlBuilder.toString()); + runOnUiThread(() -> webView.loadUrl(urlBuilder.toString())); + } catch (Exception e) { + Log.e("Maps", "Error loading map in WebView", e); + } } + // 新しい名前を追加するメソッドです + private void loadName(String locNames) { + try { + String[] locArray = locNames.split("/"); + + for (String loc : locArray) { + runOnUiThread(() -> addLocationToScrollView(loc)); + } + } catch (Exception e) { + Log.e("Maps", "Error loading names", e); + } + } + + // ScrollViewに新しい場所の名前を追加するメソッドです private void addLocationToScrollView(String locationName) { - TextView textView = new TextView(this); - textView.setText(locationName); - textView.setTextSize(16); - textView.setPadding(16, 16, 16, 16); - locationsName.addView(textView); + runOnUiThread(() -> { + try { + TextView textView = new TextView(this); + textView.setText(locationName); + textView.setTextSize(16); + textView.setPadding(16, 16, 16, 16); + + // ランダムな背景色を設定 + Random random = new Random(); + int color = Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + textView.setBackgroundColor(color); + + // 下線のViewを追加 + View underline = new View(this); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + 2 // 下線の高さをピクセル単位で設定 + ); + params.setMargins(0, 0, 0, 16); // 下線の上下のマージンを設定 + underline.setLayoutParams(params); + underline.setBackgroundColor(Color.BLACK); // 下線の色を設定 + + // TextViewと下線のViewを追加 + locationsName.addView(textView); + locationsName.addView(underline); + } catch (Exception e) { + Log.e("Maps", "Error adding location to ScrollView", e); + } + }); } @Override