【高德地圖】Android高德地圖繪制標記點Marker

📖第4章 Android高德地圖繪制標記點Marker

      • ?繪制默認 Marker
      • ?繪制多個Marker
      • ?繪制自定義 Marker
      • ?Marker點擊事件
      • ?Marker動畫效果
      • ?Marker拖拽事件
      • ?繪制默認 Infowindow
        • 🚩隱藏InfoWindow 彈框
      • ?繪制自定義 InfoWindow
        • 🚩實現 InfoWindow 樣式和內容
        • 🚩可觸發的 InfoWindow 事件
        • 🚩自定義復雜的 InfoWindow

?繪制默認 Marker

效果如下圖:

image-20231230175641852

通過aMap.addMarker()來添加標記點marker,而經緯度等信息需要通過MarkerOptions來設置,示例代碼如下:

 //marker標記物
LatLng latLng = new LatLng(31.042119,121.410428);final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("測試地點").snippet("這里是測試內容"));

Marker 常用屬性

名稱說明
position在地圖上標記位置的經緯度值。必填參數
title點標記的標題
snippet點標記的內容
draggable點標記是否可拖拽
visible點標記是否可見
anchor點標記的錨點
alpha點的透明度

anchor錨點可以精確控制標記圖標相對于標記點(經緯度)的位置,以滿足不同場景下的需求。比如您可能希望將錨點設置為標記圖標的其他部分,例如頂部中心或左側中心。默認錨點位置是底部中心

anchor(0.0f, 0.5f); // 左側中心
anchor(1.0f, 0.5f); // 右部中心
anchor(1.0f, 1.0f); // 底部右側
anchor(0.5f, 0.0f); // 頂部中心

alpha透明度是用來表示對象的可見度或不透明度的屬性。應用場景:

  1. 標記動畫:實現標記的淡入淡出效果,以改善用戶體驗
// 創建標記并設置透明度為0.5
MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(latitude, longitude)).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_icon)).alpha(0.5f); // 設置透明度為0.5
Marker marker = aMap.addMarker(markerOptions);// 在動畫中逐漸將透明度變為1.0
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(marker, "alpha", 0.5f, 1.0f);
alphaAnimator.setDuration(1000);
alphaAnimator.start();
  1. 突出顯示標記: 在一組標記中突出顯示特定的標記,可以使目標標記更加顯眼。
// 創建多個標記
MarkerOptions targetMarkerOptions = new MarkerOptions().position(new LatLng(targetLatitude, targetLongitude)).icon(BitmapDescriptorFactory.fromResource(R.drawable.target_marker_icon)).alpha(1.0f); // 目標標記的透明度為1.0
Marker targetMarker = aMap.addMarker(targetMarkerOptions);MarkerOptions otherMarkerOptions = new MarkerOptions().position(new LatLng(otherLatitude, otherLongitude)).icon(BitmapDescriptorFactory.fromResource(R.drawable.other_marker_icon)).alpha(0.5f); // 其他標記的透明度為0.5
Marker otherMarker = aMap.addMarker(otherMarkerOptions);
  1. 動態顯示與隱藏:將透明度設置為0.0時,標記將完全不可見,而設置為1.0時,則完全可見。
// 創建標記并設置透明度為0.0,標記開始時不可見
MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(latitude, longitude)).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_icon)).alpha(0.0f); // 設置透明度為0.0
Marker marker = aMap.addMarker(markerOptions);// 在動畫中逐漸將透明度變為1.0,標記逐漸變得可見
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(marker, "alpha", 0.0f, 1.0f);
alphaAnimator.setDuration(1000);
alphaAnimator.start();

?繪制多個Marker

效果如下圖:

image-20231230204810074

不管是創建默認的Marker還是自定義的Marker都一樣,都是通過MarkerOptions設置Marker的信息,再通過aMap.addMarker(markerOption)在地圖上添加。

示例代碼如下:

        //樣本數據List<LatLng> positon = new ArrayList<>();positon.add(new LatLng(31.041742,121.411517));positon.add(new LatLng(31.041370,121.411699));positon.add(new LatLng(31.041563,121.412198));//繪制自定義markerMarkerOptions options = new MarkerOptions();for (int i = 0; i < positon.size(); i++) {options.position(positon.get(i));options.title("測試"+i);options.snippet("內容"+i);aMap.addMarker(options);}

?繪制自定義 Marker

效果如下圖:

image-20231230201549663

繪制自定義 Marker的自定義icon圖標是通過BitmapDescriptorFactory來處理,它能將圖標資源文件轉換成位圖(Bitmap)對象,以便在地圖上使用。示例代碼如下:

        //繪制自定義markerLatLng latLng2 = new LatLng(31.041991,121.409628);MarkerOptions markerOption = new MarkerOptions();markerOption.position(latLng2);markerOption.title("測試2").snippet("我是自定義marker");markerOption.draggable(true);//設置Marker可拖動markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.icon_marker_orange)));markerOption.setFlat(false);//設置marker平貼地圖效果aMap.addMarker(markerOption);

至于icon圖標可以在阿里巴巴矢量圖標庫里面下載png格式的圖片即可。

🚩擴展:在自定義的marker中繪制文字等其他信息

應用場景:需要在地圖上看見該標記點中的數據信息,可以是姓名簡稱,數字等信息。 效果如下圖:

image-20231230223654693

一共兩個步驟:

  • 繪制帶文本的圖片,格式為BitmapDescriptor類型
  • 在地圖上添加標記點
        //繪制自定義帶文字的markerBitmapDescriptor withDataIcon = drawIcon(R.drawable.icon_marker_orange, "李", Color.WHITE);LatLng latLng2 = new LatLng(31.041991,121.409628);MarkerOptions markerOption = new MarkerOptions();markerOption.position(latLng2);markerOption.title("測試").snippet("我是攜帶數據的marker");markerOption.draggable(true);//設置Marker可拖動markerOption.icon(withDataIcon);markerOption.setFlat(false);//設置marker平貼地圖效果aMap.addMarker(markerOption);

drawIcon方法如下:

    /*** 繪制帶文字的marker* @param markerStyle 圖片資源* @param text        文字* @param textColor   文字顏色* @return*/private BitmapDescriptor drawIcon(int markerStyle, String text, int textColor) {Bitmap bitmap = null;BitmapDescriptor icon = null;try {bitmap = BitmapFactory.decodeResource(getResources(), markerStyle);//圖片轉bitmap位圖int markerStyleWidth = bitmap.getWidth();//獲取bitmap位圖的寬int markerStyleHeight = bitmap.getHeight();//獲取bitmap位圖的高Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);//復制Bitmap對象Canvas canvas = new Canvas(mutableBitmap); //創建Canvas對象Paint paint = new Paint();//創建Paint對象,用于定義繪制文本的樣式paint.setColor(textColor);//設置文字顏色paint.setTextSize(getResources().getDimensionPixelSize(R.dimen.text_size));//設置文字大小//獲取文本邊界Rect textBounds = new Rect();paint.getTextBounds(text, 0, text.length(), textBounds);int textWidth = textBounds.width();//文本寬度int textHeight = textBounds.height();//文本高度//計算文字在圖片上的坐標,使其在圖片居中位置float x = (markerStyleWidth - textWidth) / 2.0f;//x表示繪制文本起始點的橫坐標,從左開始float y = (markerStyleHeight + textHeight) / 2.0f - 20;//x表示繪制文本起始點的縱坐標,從頂部開始canvas.drawText(text, x, y, paint); //使用Canvas繪制文本icon = BitmapDescriptorFactory.fromBitmap(mutableBitmap);// 最后將Bitmap 轉換為 BitmapDescriptorreturn icon;} finally {if (bitmap != null){bitmap.recycle();}if (icon != null){icon.recycle();}}}

注意:

  • BitmapBitmapDescriptor是一個占用內存的對象,需要及時回收以防止內存泄漏。雖然Java有垃圾回收機制,但它是在適當的時機,例如在內存緊張或空閑時,掃描不再被引用的對象并將其釋放,在某些情況下,手動釋放資源仍然是一個良好的習慣。
  • R.dimen.text_size是在values文件下的dimens.xml資源文件中定義的,如果你沒有則創建一個并添加下面代碼。
<resources><dimen name="text_size">14sp</dimen>
</resources>

?Marker點擊事件

點擊 Marker 時會回調AMap.OnMarkerClickListener,監聽器的實現示例如下:

 //設置marker點擊事件aMap.setOnMarkerClickListener(this);

重寫onMarkerClick方法

    /*** marker 點擊監聽事件* 返回 true 則表示接口已響應事件,否則返回false* @param marker* @return*/@Overridepublic boolean onMarkerClick(Marker marker) {return false;}

?Marker動畫效果

將動畫效果放在點擊marker時可以更好看到變化,自地圖 SDK V4.0.0 版本起,SDK 提供了給 Marker 設置動畫的方法,具體實現方法如下:

    /*** marker 點擊監聽事件* 返回 true 則表示接口已響應事件,否則返回false* @param marker* @return*/@Overridepublic boolean onMarkerClick(Marker marker) {//180度旋轉動畫Animation animation = new RotateAnimation(marker.getRotateAngle(),marker.getRotateAngle()+180,0,0,0);long duration = 1000L;animation.setDuration(duration);animation.setInterpolator(new LinearInterpolator());marker.setAnimation(animation);marker.startAnimation();return false;}

?Marker拖拽事件

拖拽 Marker 時會回調AMap.OnMarkerDragListener,監聽器的實現示例如下:

//設置marker拖拽監聽事件aMap.setOnMarkerDragListener(this);
    /*** 當marker開始被拖動時回調此方法, 這個marker的位置可以通過getPosition()方法返回。* @param marker*/@Overridepublic void onMarkerDragStart(Marker marker) {Log.d("MainActivity", "Start: "+marker.getPosition());}/***  在marker拖動過程中回調此方法, 這個marker的位置可以通過getPosition()方法返回。* @param marker*/@Overridepublic void onMarkerDrag(Marker marker) {Log.d("MainActivity", "Drag: "+marker.getPosition());}/*** 在marker拖動完成后回調此方法, 這個marker的位置可以通過getPosition()方法返回。* @param marker*/@Overridepublic void onMarkerDragEnd(Marker marker) {Log.d("MainActivity", "End: "+marker.getPosition());}

image-20240101005822554

?繪制默認 Infowindow

默認 Infowindow是不用創建的,當我們創建marker時自帶有的,SDK 為用戶提供了默認的 InfoWindow 樣式,只顯示 Marker 對象的兩個屬性,一個是 title 和另一個 snippet

調用 Marker 類的 showInfoWindow()hideInfoWindow() 方法可以控制顯示和隱藏。

當改變 Marker 的 title 和 snippet 屬性時,再次調用 showInfoWindow(),可以更新 InfoWindow 顯示內容。

image-20240101012202954

🚩隱藏InfoWindow 彈框

在什么時候去隱藏InfoWindow 彈框,一般情況可以在點擊map地圖的其他地方關閉它,實現方式如下:

  • 首先設置markermap點擊監聽事件
//設置marker點擊事件
aMap.setOnMarkerClickListener(this);
//地圖點擊監聽事件
aMap.setOnMapClickListener(this);
  • 然后在marker點擊事件中記錄當前點擊的markerInfowindow是否彈框的布爾值
 private Marker current;//記錄當前點擊的marker
private boolean isMarkerClicked = false;//判斷是否Infowindow彈框
@Overridepublic boolean onMarkerClick(Marker marker) {current = marker;isMarkerClicked = true;return false;}
  • 最后在onMapClick地圖點擊事件中隱藏Infowindow彈框
    /*** map地圖點擊監聽事件*/@Overridepublic void onMapClick(LatLng latLng) {if (!isMarkerClicked) {if (current != null && current.isInfoWindowShown()) {current.hideInfoWindow();//隱藏當前Infowindow彈框}}isMarkerClicked = false; // 重置標記狀態}

?繪制自定義 InfoWindow

實現 InfoWindowAdapter接口,其中有兩個方法需要實現,依次來看一下:

public interface InfoWindowAdapter {View getInfoWindow(Marker marker);View getInfoContents(Marker marker);
}

View getInfoWindow(Marker marker)

  • 當實現此方法并返回有效值時(返回值不為空,則視為有效),SDK 將不會使用默認的樣式,而采用此方法返回的樣式(即 View)。默認會將Marker 的 title 和 snippet 顯示到 InfoWindow 中。
  • 如果此時修改了 Marker 的 title 或者 snippet 內容,再次調用類 Marker 的 showInfoWindow() 方法,InfoWindow 內容不會更新。
  • 自定義 InfoWindow 之后所有的內容更新都需要用戶自己完成。
  • 當調用 Marker 類的 showInfoWindow() 方法時,SDK 會調用 getInfoWindow(Marker marker) 方法和 getInfoContents(Marker marker) 方法(之后會提到),在這些方法中更新 InfoWindow 的內容即可。

注意:如果此方法返回的 View 沒有設置 InfoWindow 背景圖,SDK 會默認添加一個背景圖。

View getInfoContents(Marker marker)

此方法和 getInfoWindow(Marker marker) 方法的實質是一樣的,唯一的區別是:

  • 此方法不能修改整個 InfoWindow 的背景和邊框,無論自定義的樣式是什么樣,SDK 都會在最外層添加一個默認的邊框。

簡而言之,getInfoContents(Marker marker) 只允許你自定義 InfoWindow 的內容,而不能改變整個窗口的外觀和邊框。SDK 會在你自定義的內容外面添加一個默認的邊框。這可能是為了確保 InfoWindow 在地圖上有一致的外觀,以保持用戶體驗的統一性。如果你希望完全自定義整個 InfoWindow 的外觀,包括邊框,那么應該使用 getInfoWindow(Marker marker) 方法。

🚩實現 InfoWindow 樣式和內容

image-20240104235654206

實現 InfoWindow 樣式和內容的步驟如下:

  • 設置InfoWindow適配器
  • getInfoWindow返回一個自定義View組件 = R.layout.custom_info_window
implements AMap.InfoWindowAdapter//實現接口aMap.setInfoWindowAdapter(this);//設置InfoWindow適配器

實現getInfoWindow和getInfoContents方法

    View infoWindow = null;@Overridepublic View getInfoWindow(Marker marker) {if (infoWindow == null) {infoWindow = LayoutInflater.from(this).inflate(R.layout.custom_info_window, null);}render(marker, infoWindow);return infoWindow;}@Overridepublic View getInfoContents(Marker marker) {return null;}public void render(Marker marker, View view) {//如果想修改自定義Infow中內容,請通過view找到它并修改String title = marker.getTitle();TextView titleUi = view.findViewById(R.id.title);titleUi.setText(title);String snippet = marker.getSnippet();TextView snippetUi = view.findViewById(R.id.snippet);snippetUi.setText(snippet);}

R.layout.custom_info_window組件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="17sp"android:textColor="#72db0f"android:text="標題"/><TextViewandroid:id="@+id/snippet"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="17sp"android:textColor="#db0f00"android:text="詳細內容"/>
</LinearLayout>
🚩可觸發的 InfoWindow 事件

點擊 InfoWindow 時會回調 AMap.OnInfoWindowClickListener,監聽器的實現示例如下:

OnInfoWindowClickListener listener = new OnInfoWindowClickListener() {@Overridepublic void onInfoWindowClick(Marker marker) {marker.setTitle("infowindow clicked");}
};//綁定信息窗點擊事件
aMap.setOnInfoWindowClickListener(listener);

簡單點說就是可以自定義點擊 InfoWindow 后的行為,例如改變標題、展示更多信息或觸發其他操作。它有哪些使用場景和用途:

  • 刷新 InfoWindow 內容: 在點擊事件中,您可以修改 InfoWindow 的內容,使其動態刷新,顯示最新的信息。這對于實時更新的信息非常有用。
  • **交互式地圖體驗:**例如點擊時顯示更多的內容、點擊后關閉InfoWindow彈框,marker.hideInfoWindow()即可。
  • **與標記點關聯的操作:**例如,在地圖上顯示商家的標記點,點擊 InfoWindow 可以跳轉到商家詳情頁面。

等等還要其他的,這里就舉例這幾種。

🚩自定義復雜的 InfoWindow

根據需求,你可能需求對標記點進行各種操作,如下圖:

image-20240105001140512

其實繪制自定義 InfoWindow本質上就是兩步,先設置InfoWindow適配器,其次在view組件中自定義要顯示的樣式或按鈕。

在這種自定義可能會遇到居中顯示問題,如何點擊標點時讓其在屏幕中心,或者在屏幕中心下方一點點使其能都剛好在屏幕中心完全顯示。只需在onMarkerClick點擊事件中實現如下邏輯:

  • marker位置坐標下移一小段距離顯示
  • 注意實現onMarkerClick前需要 aMap.setOnMarkerClickListener(this);設置
    @Overridepublic boolean onMarkerClick(Marker marker) {// 當前點擊的marker位置坐標LatLng markerLatLng = marker.getPosition();// 計算新坐標(下移一小段距離)double offsetLat = 0.003; LatLng newCenterLatLng = new LatLng(markerLatLng.latitude + offsetLat, markerLatLng.longitude);// 創建一個新的 CameraPosition,設置新的方向為 0(北方向)CameraPosition newPosition = new CameraPosition.Builder().target(newCenterLatLng).bearing(0) // 將方向設置為 0(北方向).zoom(15) // 設置縮放級別.build();// 移動地圖中心點aMap.animateCamera(CameraUpdateFactory.newCameraPosition(newPosition));return true; // 返回 true 表示消費了點擊事件,不再傳遞給其他監聽器}

在這里插入圖片描述

?第1,2章 Android搭建3D高德地圖詳細教
?第 3 章 初始化定位并顯示小藍點
?第 4 章Android高德地圖繪制標記點Marker
?第 5 章Android高德地圖控件交互詳細介紹

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696997.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 中 CopyOnWriteArrayList和CopyOnWriteArraySet

什么是CopyOnWriteArrayList和CopyOnWriteArraySet CopyOnWriteArrayList和CopyOnWriteArraySet都是Java并發編程中提供的線程安全的集合類。 CopyOnWriteArrayList是一個線程安全的ArrayList&#xff0c;其內部通過volatile數組和顯式鎖ReentrantLock來實現線程安全。它采用…

解決ios17無法復制的問題

原代碼寫過一片js實現復制的代碼 那段代碼有問題 以下是之前寫的一段有問題的原代碼&#xff1a; let url "kkkkkk";const hiddenTextarea document.createElement("textarea");hiddenTextarea.style.position "absolute";hiddenTextarea.st…

ArcgisForJS如何實現添加含圖片樣式的點要素?

文章目錄 0.引言1.加載底圖2.獲取點要素的坐標3.添加含圖片樣式的幾何要素4.完整實現 0.引言 ArcGIS API for JavaScript 是一個用于在Web和移動應用程序中創建交互式地圖和地理空間分析應用的庫。本文在ArcGIS For JavaScript中使用Graphic對象來創建包含圖片樣式的點要素。 …

MIT-6.824-Lab2,Raft部分筆記|Use Go

文章目錄 前記Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide設計與編碼 2BtaskHint設計與編碼 2CtaskHint question后記 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft實驗易錯點debug技巧 前記 趁著研一考完期末有點點空余…

軟考29-上午題-【數據結構】-排序

一、排序的基本概念 1-1、穩定性 穩定性指的是相同的數據所在的位置經過排序后是否發生變化。若是排序后&#xff0c;次序不變&#xff0c;則是穩定的。 1-2、歸位 每一趟排序能確定一個元素的最終位置。 1-3、內部排序 排序記錄全部存放在內存中進行排序的過程。 1-4、外部…

vue使用.sync和update實現父組件與子組件數據綁定的案例

在 Vue 中&#xff0c;.sync 是一個用于實現雙向數據綁定的特殊修飾符。它允許父組件通過一種簡潔的方式向子組件傳遞一個 prop&#xff0c;并在子組件中修改這個 prop 的值&#xff0c;然后將修改后的值反饋回父組件&#xff0c;實現雙向數據綁定。 使用 .sync 修飾符的基本語…

微信小程序 --- wx.request網絡請求封裝

網絡請求封裝 網絡請求模塊難度較大&#xff0c;如果學習起來感覺吃力&#xff0c;可以直接學習 [請求封裝-使用 npm 包發送請求] 以后的模塊 01. 為什么要封裝 wx.request 小程序大多數 API 都是異步 API&#xff0c;如 wx.request()&#xff0c;wx.login() 等。這類 API 接口…

【精選】Java面向對象進階——內部類

&#x1f36c; 博主介紹&#x1f468;?&#x1f393; 博主介紹&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高興認識大家~ ?主攻領域&#xff1a;【滲透領域】【應急響應】 【Java】 【VulnHub靶場復現】【面試分析】 &#x1f389;點贊?評論?收藏 …

【操作系統】磁盤文件管理系統

實驗六 磁盤文件管理的模擬實現 實驗目的 文件系統是操作系統中用來存儲和管理信息的機構&#xff0c;具有按名存取的功能&#xff0c;不僅能方便用戶對信息的使用&#xff0c;也有效提高了信息的安全性。本實驗模擬文件系統的目錄結構&#xff0c;并在此基礎上實現文件的各種…

FISCO BCOS(十七)利用腳本進行區塊鏈系統監控

要利用腳本進行區塊鏈系統監控&#xff0c;你可以使用各種編程語言編寫腳本&#xff0c;如Python、Shell等 利用腳本進行區塊鏈系統監控可以提高系統的穩定性、可靠性&#xff0c;并幫助及時發現和解決潛在問題&#xff0c;從而確保區塊鏈網絡的正常運行。本文可以利用腳本來解…

Java實戰:分布式Session解決方案

本文將詳細介紹Java分布式Session的解決方案。我們將探討分布式Session的基本概念&#xff0c;以及常見的分布式Session管理技術&#xff0c;如Cookie、Token、Redis等。此外&#xff0c;我們將通過具體的示例來展示如何在Java應用程序中實現分布式Session。本文適合希望了解和…

Swift基礎知識:21.Swift繼承

在 Swift 中&#xff0c;類可以通過繼承從其他類獲得屬性和方法。被繼承的類稱為父類&#xff08;或超類&#xff09;&#xff0c;繼承的類稱為子類。子類可以繼承父類的特性&#xff0c;并且可以添加自己的新特性。繼承允許類層次結構中的代碼重用和多態性。 定義一個基類&am…

Vue3 使用動態組件 component

component 標簽&#xff1a;用于動態渲染標簽或組件。 語法格式&#xff1a; <component is"標簽或組件名">標簽內容</component> 動態渲染標簽&#xff1a; <template><h3>我是父組件</h3><component is"h1">動態…

SpringCloud(15)之SpringCloud Gateway

一、Spring Cloud Gateway介紹 Spring Cloud Gateway 是Spring Cloud團隊的一個全新項目&#xff0c;基于Spring 5.0、SpringBoot2.0、 Project Reactor 等技術開發的網關。旨在為微服務架構提供一種簡單有效統一的API路由管理方式。 Spring Cloud Gateway 作為SpringCloud生態…

(delphi11最新學習資料) Object Pascal 學習筆記---第5章第3節(自定義托管記錄)

5.3.5 運算符和自定義托管記錄 ? 在 Delphi 語言中&#xff0c;有一組特殊的運算符可用于記錄&#xff0c;以定義自定義托管記錄。在此之前&#xff0c;請允許我回顧一下記錄內存初始化的規則&#xff0c;以及普通記錄和托管記錄之間的區別。 ? Delphi 中的記錄可以包含任何…

大語言模型LangChain本地知識庫:向量數據庫與文件處理技術的深度整合

文章目錄 大語言模型LangChain本地知識庫&#xff1a;向量數據庫與文件處理技術的深度整合引言向量數據庫在LangChain知識庫中的應用文件處理技術在知識庫中的角色向量數據庫與文件處理技術的整合實踐挑戰與展望結論 大語言模型LangChain本地知識庫&#xff1a;向量數據庫與文件…

【Unity】MySql +Navicat 安裝教程

問題描述 在使用Unity開發的時候&#xff0c;有的時候我們是需要使用Mysql數據庫的&#xff0c;本教程使用的MySql 和Navicat均為免安裝版 ?mysql安裝 1.下載mysql解壓至任意目錄&#xff0c;此處以“C:\mysql-5.6.39-winx64”為例. mysql百度云連接&#xff1a; 鏈接&…

Java的遞歸【詳解】

1.認識遞歸基礎知識 什么是方法遞歸&#xff1f; 遞歸是一種算法&#xff0c;在程序設計語言中廣泛應用。 從形式上說&#xff1a;方法調用自身的形式稱為方法遞歸&#xff08; recursion&#xff09;。 遞歸的形式&#xff1a; 直接遞歸&#xff1a;方法自己調用自己。 間接遞…

【監控】Spring Boot+Prometheus+Grafana實現可視化監控

目錄 1.概述 2.spring actuator 3.Prometheus 3.1.介紹 3.2.使用 1.client端的配置 2.server端的配置 4.grafana 5.留個尾巴 1.概述 本文是博主JAVA監控技術系列的第四篇&#xff0c;前面已經聊過了JMX、Spring actuator等技術&#xff0c;本文我們就將依托于Spring …

利用docker一鍵部署LLaMa到自己的Linux服務器,有無GPU都行、可以指定GPU數量、支持界面對話和API調用,離線本地化部署包含模型權重合并

利用docker一鍵部署LLaMa到自己的Linux服務器,有無GPU都行、可以指定GPU數量、支持界面對話和API調用,離線本地化部署包含模型權重合并。兩種方式實現支持界面對話和API調用,一是通過搭建text-generation-webui。二是通過llamma.cpp轉換模型為轉換為 GGUF 格式,使用 quanti…