java 百度poi_Android應用中使用百度地圖API之POI(三)

先看執行后的圖吧:

fefac8e84077705b4a6af3eb03f1d574.png

SouthEast

a6493e9af99b2e5be6c08c2b36e1fd38.png

POI(Point of Interest)。中文能夠翻譯為“興趣點”。在地理信息系統中。一個POI能夠是一棟房子、一個商鋪、一個郵筒、一個公交站等 ?具體:http://developer.baidu.com/map/sdkandev-4.htm

主要應用?MKSearch 類:

com.baidu.mapapi.search

類 MKSearch

java.lang.Object

com.baidu.mapapi.search.MKSearch

public class MKSearch

extends java.lang.Object

搜索服務.

用于位置檢索、周邊檢索、范圍檢索、公交檢索、駕乘檢索、步行檢索

字段概要

字段

限定符和類型

字段和說明

static int

static int

static int

static int

公交檢索策略常量:最少步行距離

static int

static int

static int

static int

static int

static int

static int

static int

static int

方法概要

方法

限定符和類型

方法和說明

int

公交路線具體信息搜索 異步函數。返回結果在MKSearchListener里的onGetBusDetailResult方法通知

void

銷毀MKSearch 模塊 , 當不再使用Search 功能時。須要調用此函數

int

MKPlanNode?start,

java.lang.String?endCity,?MKPlanNode?end)

駕乘路線搜索.

int

MKPlanNode?start,

java.lang.String?endCity,?MKPlanNode?end,

java.util.List?wpNodes)

駕車路線搜索,可設置途經點 異步函數。返回結果在MKSearchListener里的onGetDrivingRouteResult方法通知

int

依據地址名獲取地址信息 異步函數,返回結果在MKSearchListener里的onGetAddrResult方法通知

int

獲取指定頁的的poi結果.

boolean

初使化,使用完畢后。請調用 destroy 函數釋放資源

int

poi具體信息檢索

boolean

獲取POI信息共享短url.

boolean

GeoPoint?location,

java.lang.String?name, java.lang.String?address)

獲取地址信息共享短URL.

int

依據范圍和檢索詞發起范圍檢索.

int

城市poi檢索.

int

GeoPoint?pt,

int?radius)

依據中心點、半徑與檢索詞發起周邊檢索.

int

依據地理坐標點獲取地址信息 異步函數,返回結果在MKSearchListener里的onGetAddrResult方法通知

int

設置駕車路線規劃策略.

void

int

設置路線規劃策略.

int

聯想詞檢索,依據模糊的不完備的檢索詞返回精確的建議搜索詞 異步函數,返回結果在MKSearchListener里的onGetSuggestionResult方法通知

int

MKPlanNode?start,?MKPlanNode?end)

公交路線搜索.

int

MKPlanNode?start,

java.lang.String?endCity,?MKPlanNode?end)

步行路線搜索.

通過上面的閱讀應該有所了解了吧,直接代碼了。

MainActivity.java

package com.majianjie.baidumap;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.graphics.Bitmap;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.MeasureSpec;

import android.view.Window;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.Spinner;

import android.widget.TextView;

import android.widget.Toast;

import com.baidu.location.BDLocation;

import com.baidu.location.BDLocationListener;

import com.baidu.location.LocationClient;

import com.baidu.location.LocationClientOption;

import com.baidu.mapapi.BMapManager;

import com.baidu.mapapi.MKGeneralListener;

import com.baidu.mapapi.map.LocationData;

import com.baidu.mapapi.map.MKEvent;

import com.baidu.mapapi.map.MKMapViewListener;

import com.baidu.mapapi.map.MapController;

import com.baidu.mapapi.map.MapPoi;

import com.baidu.mapapi.map.MapView;

import com.baidu.mapapi.map.MyLocationOverlay;

import com.baidu.mapapi.map.PoiOverlay;

import com.baidu.mapapi.map.PopupClickListener;

import com.baidu.mapapi.map.PopupOverlay;

import com.baidu.mapapi.search.MKAddrInfo;

import com.baidu.mapapi.search.MKBusLineResult;

import com.baidu.mapapi.search.MKDrivingRouteResult;

import com.baidu.mapapi.search.MKPoiInfo;

import com.baidu.mapapi.search.MKPoiResult;

import com.baidu.mapapi.search.MKSearch;

import com.baidu.mapapi.search.MKSearchListener;

import com.baidu.mapapi.search.MKShareUrlResult;

import com.baidu.mapapi.search.MKSuggestionResult;

import com.baidu.mapapi.search.MKTransitRouteResult;

import com.baidu.mapapi.search.MKWalkingRouteResult;

import com.baidu.platform.comapi.basestruct.GeoPoint;

import com.example.baidumap.R;

public class MainActivity extends Activity {

//聲明控件

private Button request;

private static StringBuilder sb = new StringBuilder();

private int i=1;

private Toast mToast=null;

private BMapManager mBMapManager=null;

private MapView mMapView = null;//MapView 是地圖主控件

private MapController mMapController = null;//用MapController完畢地圖控制

private LocationClient mLocClient;

public LocationData mLocData = null;

private LocationOverlay myLocationOverlay = null;//定位圖層

private boolean isRequest = false;//是否手動觸發請求定位

private boolean isFirstLoc = true;//是否首次定位

private PopupOverlay mPopupOverlay = null;//彈出泡泡圖層。瀏覽節點時使用

private View viewCache=null;

public BDLocation location = new BDLocation();

//POI

private MKSearch mMKSearch = null;

private Spinner detail;

private List poi;

private ArrayAdapter< String> adapter;

private String poiName="";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//**使用地圖sdk前需先初始化BMapManager。這個必須在setContentView()先初始化

mBMapManager = new BMapManager(this);

//第一個參數是API key, 第二個參數是經常使用事件監聽,用來處理通常的網絡錯誤,授權驗證錯誤等,你也能夠不加入這個回調接口

mBMapManager.init("LDtH1sVwr7kygaF0aTqaVwWU", new MKGeneralListener() {

//授權錯誤的時候調用的回調函數

@Override

public void onGetPermissionState(int iError) {

if (iError == MKEvent.ERROR_PERMISSION_DENIED) {

showToast("API KEY錯誤, 請檢查!");

}

}

//一些網絡狀態的錯誤處理回調函數

@Override

public void onGetNetworkState(int iError) {

if (iError == MKEvent.ERROR_NETWORK_CONNECT) {

Toast.makeText(getApplication(), "您的網絡出錯啦!", Toast.LENGTH_LONG).show();

}

}

});

//初始化

init();

//單擊事件

click();

}

//* 顯示Toast消息

private void showToast(String msg){

if(mToast == null){

mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);

}else{

mToast.setText(msg);

mToast.setDuration(Toast.LENGTH_SHORT);

}

mToast.show();

}

private void click() {

request.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

requestLocation();

}

});

}

@Override

protected void onResume() {

//MapView的生命周期與Activity同步。當activity掛起時需調用MapView.onPause()

mMapView.onResume();

mBMapManager.start();//又一次啟動

mMKSearch.init(mBMapManager, new MySearchListener());

super.onResume();

}

@Override

protected void onPause() {

//MapView的生命周期與Activity同步,當activity掛起時需調用MapView.onPause()

mMapView.onPause();

super.onPause();

}

private void init() {

//使用自定義的title,注意順序

setContentView(R.layout.activity_main); //activity的布局 //這里是加入自定義的titlebtn.xml

//通過id找到他們

mMapView = (com.baidu.mapapi.map.MapView) findViewById(R.id.bmapView);

mMapController=mMapView.getController(); //獲取地圖控制器

mMapController.enableClick(true); //設置地圖是否響應點擊事件

request=(Button)findViewById(R.id.request);

viewCache = LayoutInflater.from(this).inflate(R.layout.pop_layout, null);

mPopupOverlay= new PopupOverlay(mMapView, new PopupClickListener() {// * 點擊彈出窗體圖層回調的方法

@Override

public void onClickedPopup(int arg0) {

//隱藏彈出窗體圖層

mPopupOverlay.hidePop();

}

});

mMapController.enableClick(true); //* 設置地圖是否響應點擊事件 .

mMapController.setZoom(12);// * 設置地圖縮放級別

mMapView.setBuiltInZoomControls(true); // * 顯示內置縮放控件

mMapView.setTraffic(true);

//poi

mMKSearch = new MKSearch();

detail=(Spinner)findViewById(R.id.detail);

poi = new ArrayList();

poi.add("請選擇");

poi.add("ATM");

poi.add("旅館");

poi.add("餐廳");

poi.add("公園");

poi.add("藥店");

poi.add("圖書館");

poi.add("景點");

poi.add("醫院");

poi.add("KFC");

poi.add("學校");

poi.add("超市");

adapter=new ArrayAdapter(this, android.R.layout.simple_spinner_item,poi);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

detail.setAdapter(adapter);

detail.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView> parent, View v,int position, long id) {

poiName=(parent.getSelectedItem().toString());

if(poiName.equals("請選擇")){}

else{

mMKSearch.init(mBMapManager, new MySearchListener());//注意,MKSearchListener僅僅支持一個。以最后一次設置為準

mMKSearch.poiSearchNearBy(poiName, new GeoPoint((int) (39.907004 * 1E6), (int) (119.54048 * 1E6)), 5000);

}

}

@Override

public void onNothingSelected(AdapterView

> arg0) {}

});

mLocData = new LocationData();

mLocClient = new LocationClient(getApplicationContext()); // 定位SDK的核心類

//實例化定位服務。LocationClient類必須在主線程中聲明

mLocClient.registerLocationListener(new BDLocationListenerImpl());//注冊定位監聽接口

/**

* 設置定位參數

*/

LocationClientOption option = new LocationClientOption();

option.setOpenGps(true); //打開GPRS

option.setAddrType("all");//返回的定位結果包括地址信息

option.setCoorType("bd09ll");//返回的定位結果是百度經緯度,默認值gcj02

option.setScanSpan(5000); //設置發起定位請求的間隔時間為5000ms

option.disableCache(false);//禁止啟用緩存定位

//option.setPoiNumber(5); //最多返回POI個數

//option.setPoiDistance(1000); //poi查詢距離

//option.setPoiExtraInfo(true); //是否須要POI的電話和地址等具體信息

mLocClient.setLocOption(option);

mLocClient.start(); //調用此方法開始定位

myLocationOverlay = new LocationOverlay(mMapView);//定位圖層初始化

//將定位數據設置到定位圖層里

myLocationOverlay.setMarker(getResources().getDrawable(R.drawable.set));

//加入定位圖層

mMapView.getOverlays().add(myLocationOverlay);

myLocationOverlay.enableCompass();

//更新圖層數據運行刷新后生效

mMapView.refresh();

/*

//準備要加入的Overlay

double mLat1 = 39.910159;

double mLon1 = 119.544697;

// 用給定的經緯度構造GeoPoint,單位是微度 (度 * 1E6)

GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));

//準備overlay圖像數據,依據實情情況修復

Drawable mark= getResources().getDrawable(R.drawable.set);

//用OverlayItem準備Overlay數據

OverlayItem item1 = new OverlayItem(p1,"item1","item1");

//使用setMarker()方法設置overlay圖片,假設不設置則使用構建ItemizedOverlay時的默認設置

//創建IteminizedOverlay

CustomItemizedOverlay itemOverlay = new CustomItemizedOverlay(mark, mMapView);

//將IteminizedOverlay加入到MapView中

mMapView.getOverlays().clear();

mMapView.getOverlays().add(itemOverlay);

//如今全部準備工作已準備好,使用下面方法管理overlay.

//加入overlay, 當批量加入Overlay時使用addItem(List)效率更高

itemOverlay.addItem(item1);

//刪除overlay .

//itemOverlay.removeItem(itemOverlay.getItem(0));

//mMapView.refresh();

//清除overlay

// itemOverlay.removeAll();

// mMapView.refresh();

mMapView.refresh();

*/

// mMapController.setCenter(p1);

mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {

// * 地圖移動完畢時會回調此接口 方法

@Override

public void onMapMoveFinish() {

//showToast("地圖移動完畢。");

}

//* 地圖加載完畢回調此接口方法

@Override

public void onMapLoadFinish() {

showToast("地圖加載完畢!");

}

//* 地圖完畢帶動畫的操作(如: animationTo())后。此回調被觸發

@Override

public void onMapAnimationFinish() {

}

//當調用過 mMapView.getCurrentMap()后,此回調會被觸發 可在此保存截圖至存儲設備

@Override

public void onGetCurrentMap(Bitmap arg0) {

}

//* 點擊地圖上被標記的點回調此方法

@Override

public void onClickMapPoi(MapPoi arg0) {

if (arg0 != null){

showToast(arg0.strText);

}

}

});

}

class MySearchListener implements MKSearchListener{

@Override

public void onGetAddrResult(MKAddrInfo arg0, int arg1) {}

@Override

public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {}

@Override

public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {}

@Override

public void onGetPoiDetailSearchResult(int arg0, int arg1) {}

@Override

public void onGetPoiResult(MKPoiResult result, int type, int iError) {

if (result == null) {

return;

}

// 清除地圖上已有的全部覆蓋物

mMapView.getOverlays().clear();

// PoiOverlay是baidu map api提供的用于顯示POI的Overlay

PoiOverlay poioverlay = new PoiOverlay(MainActivity.this, mMapView);

// 設置搜索到的POI數據

poioverlay.setData(result.getAllPoi());

// 在地圖上顯示PoiOverlay(將搜索到的興趣點標注在地圖上)

mMapView.getOverlays().add(poioverlay);

if(result.getNumPois() > 0) {

// 設置當中一個搜索結果所在地理坐標為地圖的中心

MKPoiInfo poiInfo = result.getPoi(0);

mMapController.setCenter(poiInfo.pt);

}

// sb.append("共搜索到").append(result.getNumPois()).append("個POI\n");

sb.append("POI信息:").append("\n");

// 遍歷當前頁返回的POI(默認僅僅返回10個)

for (MKPoiInfo poiInfo : result.getAllPoi()) {

sb.append(i+" 名稱:").append(poiInfo.name).append("\n");

sb.append("地址:").append(poiInfo.address).append("\n");

i++;

}

// 通過AlertDialog顯示當前頁搜索到的POI

new AlertDialog.Builder(MainActivity.this)

.setTitle("搜索到的POI信息")

.setMessage(sb.toString())

.setPositiveButton("關閉", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

dialog.dismiss();

sb.delete(0,sb.length());

i=1;

}

}).create().show();

}

@Override

public void onGetShareUrlResult(MKShareUrlResult arg0, int arg1,int arg2) {}

@Override

public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {}

@Override/** * 公交換乘路線搜索結果 * * @param result 搜索結果 * @param iError 錯誤號(0表示正確返回) */

public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {}

@Override /** * 步行路線搜索結果 * * @param result 搜索結果 * @param iError 錯誤號(0表示正確返回) */

public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

CreateMenu(menu);

return true;

}

private void CreateMenu(Menu menu){

MenuItem mnu1 =menu.add(0,0,0,"顯示衛星地圖");

{

mnu1.setAlphabeticShortcut('a');//設置快捷鍵

//mnu1.serIcon(R.drawable.icon);//設置圖片

}

MenuItem mnu2 =menu.add(0,1,1,"顯示街道地圖");

{

mnu2.setAlphabeticShortcut('b');//設置快捷鍵

//mnu1.serIcon(R.drawable.icon);//設置圖片

}

MenuItem mnu3 =menu.add(0,2,2,"3D地圖");

{

mnu3.setAlphabeticShortcut('c');//設置快捷鍵

//mnu1.serIcon(R.drawable.icon);//設置圖片

}

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

if(item.getItemId() == 0){

mMapView.setSatellite(true);//設置顯示為衛星地圖:

mMapView.setTraffic(false);

}else if(item.getItemId() == 1){

mMapView.setTraffic(true);//顯示街道地圖

mMapView.setSatellite(false);

}else if(item.getItemId() == 2){

//mMapView.se

}

return true;

}

public class BDLocationListenerImpl implements BDLocationListener {

// * 接收異步返回的定位結果。參數是BDLocation類型參數

@Override

public void onReceiveLocation(BDLocation location) {

if (location == null) {

return;

}

MainActivity.this.location = location;

mLocData.latitude = location.getLatitude();

mLocData.longitude = location.getLongitude();

//假設不顯示定位精度圈,將accuracy賦值為0就可以

mLocData.accuracy = location.getRadius();

mLocData.direction = location.getDerect();

//將定位數據設置到定位圖層里

myLocationOverlay.setData(mLocData);

//更新圖層數據運行刷新后生效

mMapView.refresh();

if(isFirstLoc || isRequest){

//將給定的位置點以動畫形式移動至地圖中心

mMapController.animateTo(new GeoPoint(

(int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)));

showPopupOverlay(location); //加載時候就彈出

isRequest = false;

}

isFirstLoc = false;

}

// 接收異步返回的POI查詢結果。參數是BDLocation類型參數

@Override

public void onReceivePoi(BDLocation poiLocation) {

}

}

private void requestLocation() {

isRequest = true;

if(mLocClient != null && mLocClient.isStarted()){

showToast("正在定位......");

mLocClient.requestLocation();

}

}

//繼承MyLocationOverlay重寫dispatchTap方法

private class LocationOverlay extends MyLocationOverlay{

public LocationOverlay(MapView arg0) {

super(arg0);

}

// * 在“我的位置”坐標上處理點擊事件。

@Override

protected boolean dispatchTap() {

//點擊我的位置顯示PopupOverlay

showPopupOverlay(location);

return super.dispatchTap();

}

@Override

public void setMarker(Drawable arg0) {

super.setMarker(arg0);

}

}

@Override

protected void onDestroy() {

//MapView的生命周期與Activity同步,當activity銷毀時需調用MapView.destroy()

mMapView.destroy();

//退出應用調用BMapManager的destroy()方法

if(mBMapManager != null){

mBMapManager.destroy();

mBMapManager = null;

}

//退出時銷毀定位

if (mLocClient != null){

mLocClient.stop();

}

super.onDestroy();

}

//* 顯示彈出窗體圖層PopupOverlay

private void showPopupOverlay(BDLocation location){

TextView popText = ((TextView)viewCache.findViewById(R.id.location_tips));

popText.setText("[我的位置]\n" + location.getAddrStr());

mPopupOverlay.showPopup(getBitmapFromView(popText),

new GeoPoint((int)(location.getLatitude()*1e6), (int)(location.getLongitude()*1e6)),

15);

}

// * 將View轉換成Bitmap的方法

public static Bitmap getBitmapFromView(View view) {

view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

view.buildDrawingCache();

Bitmap bitmap = view.getDrawingCache();

return bitmap;

}

}

有關性能的優化,這里不多解說,正在學習中。

。。/呵呵

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

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

相關文章

java 順序存儲鍵值對_java://Comparator、Comparable的用法(按照要求將map集合的鍵值對進行順序輸出)...

import java.util.*;public class Person implements Comparable//使Person的屬性具有比較性{private String name;private int age;public Person(String name,int age)//初始化構造函數{this.name name;this.age age;}public void set(String name,int age)//重新設置姓名和…

java日歷事件處理_日歷表的事件處理和管理(劉靜)

1 //添加gridview,顯示具體的日期2 SuppressLint("ResourceAsColor")3 private voidaddGridView() {4 LinearLayout.LayoutParams params newLinearLayout.LayoutParams(5 LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);6 //取得屏幕的寬度和高度7 WindowMa…

java第四次上機作業_第十java上機作業

第十java上機作業 第七章上級作業 7.1 public class Rectangle { double width1; double height1; String color“white“; public Rectangle(){} public Rectangle(double width,double height,String color) { this.widthwidth; this.heightheight; this.colorcolor; } publi…

java解析帶斜杠的參數_Java Spring MVC應用程序僅接受帶有斜杠的POST請求

war文件名是forms.war。 web.xml中的url模式為"/"控制器操作的RequestMapping為"/"如果遇到localhost&#xff1a;8080 /表單&#xff0c;則RequestMethod.GET操作正常工作如果針對localhost:8080/forms點擊發布數據&#xff0c;則不會觸發RequestMethod.P…

java文件編碼格式環境變量_Jenkins maven 構建亂碼,修改file.encoding系統變量編碼為UTF-8...

一切都是windows的控制臺默認編碼GBK問題情景&#xff1a;使用jenkins構建&#xff0c;console 輸出的中文亂碼。代碼編碼格式是utf-8&#xff0c;因為Jenkins會默認讀取當前系統的編碼格式&#xff0c;導致構建日志亂碼和selenium自動化測試輸入的中文亂碼。控制臺輸出亂碼摸索…

http multipart java_Http MultiPart請求

我正在嘗試使用httpClient庫上傳圖像(多部分/表單數據) . 我可以使用httpPost方法和byteArrayRequestEntity上傳圖像 . 以下是我使用的代碼&#xff1a;File file new File(imageFilePath);HttpClient client new HttpClient();PostMethod method new PostMethod("http…

java分布式會話redis_詳解springboot中redis的使用和分布式session共享問題

對于分布式使用NginxTomcat實現負載均衡&#xff0c;最常用的均衡算法有IP_Hash、輪訓、根據權重、隨機等。不管對于哪一種負載均衡算法&#xff0c;由于Nginx對不同的請求分發到某一個Tomcat&#xff0c;Tomcat在運行的時候分別是不同的容器里&#xff0c;因此會出現session不…

python3.8使用方法_python3.8新特性

python3.8新特性Python3.8穩定版已發布&#xff0c;官網發布了一篇介紹新特性的文章&#xff0c;在此記錄一下。新增賦值操作符:作用&#xff1a;把較大表達式中的某部分值賦給變量,因為看起來像海象的眼睛和牙齒&#xff0c;: 操作符有個特別的名字&#xff1a;海象操作符范例…

java責任鏈設計模式 訂單_Java責任鏈設計模式實例分析

本文實例講述了Java責任鏈設計模式。分享給大家供大家參考&#xff0c;具體如下&#xff1a;一 代碼abstract class AbstractHandler {private Handler Handler null;// 持有責任鏈中下一個責任處理者的引用public void setHandler( Handler handler ) {this.Handler handler…

java map去重復的數據_使用HashMap去重復數據.

因為HashMap是鍵值對形式&#xff0c;所以一個鍵只對應一個Value&#xff0c;利用這個原理&#xff0c;我們就可以根據某列重復數據做鍵對重復數據進行處理啦~首先先看看我要處理 的數據然后我最后想要的結果&#xff1a;需求&#xff1a;根據groupName每個分組信息只顯示一條數…

centos6.5 MySQL 服務器_啟用CentOS6.5 64位安裝時自帶的MySQL數據庫服務器

本人在虛擬機上又安裝了一臺linux機器&#xff0c;作為MySQL數據庫服務器用&#xff0c;在安裝時選擇了系統自帶的MySQL服務器端&#xff0c;以下是啟用步驟。首先開啟mysqld服務#service mysqld start進入/usr/bin目錄#cd /usr/bin設定mysql數據庫root用戶的密碼#mysqladmin -…

java xml date_W3C XML 模式時間數據類型與java Date進行轉換

W3C XML 模式時間數據格式:"2014-11-17T 09:40:25" 或者 “2014-11-17T 09:40:2508:00”要想把以上格式的時間轉換為能被java所使用個格式有以下3種辦法&#xff1a;(1)、jdk中有這么一個類XMLGregorianCalendar&#xff0c;使用XMLGregorianCalendar類中的toGreGreg…

PHP stomp 連接判斷,php實現通過stomp協議連接ActiveMQ操作示例

本文實例講述了php實現通過stomp協議連接ActiveMQ操作。分享給大家供大家參考&#xff0c;具體如下&#xff1a;前面介紹了php ActiveMQ的安裝與使用&#xff0c;這里再來講述一下php通過stomp協議連接ActiveMQ。一、安裝php的stomp擴展http://pecl.php.net/package/stomp如&am…

authinfo.php,【nginxphp】后臺權限認證方式

一、最常用的方法(代碼中限制)1、如何限制IPfunction get_new_ip(){if(getenv(HTTP_CLIENT_IP)) {$onlineip getenv(HTTP_CLIENT_IP);} elseif(getenv(HTTP_X_FORWARDED_FOR)) {$onlineip getenv(HTTP_X_FORWARDED_FOR);} elseif(getenv(REMOTE_ADDR)) {$onlineip getenv(RE…

php數組無限文類,php把無限級分類生成數組的類

你是否遇到需要把無限級分類循環出來&#xff0c;是不是很頭痛。比如&#xff0c;要循環出一個SELECT,或一個TABLE&#xff0c;要寫一大堆判斷。我的做法是生成數組&#xff0c;可以重復調用&#xff0c;直接循環數組就行了。為了方便&#xff0c;把它寫成了類&#xff1a;clas…

php sql取數據生成數組中,php中實現數組生成要執行的sql語句

本篇文章主要介紹php中實現數組生成要執行的sql語句&#xff0c;感興趣的朋友參考下&#xff0c;希望對大家有所幫助。會不會碰到這樣一種情況呢&#xff1f;每次獲取數據將數據和歷史版本都有一定的差別&#xff0c;然而用ThinkPHP的addAll()函數&#xff0c;卻會將已有的數據…

xss漏洞php注射實戰,利用XSS滲透DISCUZ 6.1.0實戰

論壇——>入侵者布置的跨站攻擊——>轉移被入侵這視線(隱蔽)論壇插入腳本&#xff1a;var img new Image();img.src get_cookie.php?var encodeURI(document.cookie);但是我不一樣&#xff0c;因為他需要誘導人去點擊他的鏈接&#xff0c;但是現在人不是傻子&#xf…

java模塊化按需加載,JavaScript模塊化之使用requireJS按需加載

模塊加載器的概念可能稍微接觸過前端開發的童鞋都不會陌生&#xff0c;通過模塊加載器可以有效的解決這些問題&#xff1a;JS文件的依賴關系。通過異步加載優化script標簽引起的阻塞問題可以簡單的以文件為單位將功能模塊化并實現復用主流的JS模塊加載器有requireJS&#xff0c…

宇軒網絡面試題目PHP,二十道接地氣的php面試題,讓你直接通過面試!就此奉上~...

1、echo count(“abc”); 輸出什么&#xff1f;答&#xff1a;"1"count— 計算數組中的單元數目或對象中的屬性個數int count ( mixed var\[,intvar \[, intvar\[,intmode ] ), 如果 var 不是數組類型或者實現了 Countable 接口的對象&#xff0c;將返回 1&#xff0…

java期末試題c卷,JAVA程序設計期末考試試卷及參考答案

《JAVA程序設計》期末考試試卷考生注意&#xff1a;1&#xff0e;本試卷滿分100分。2&#xff0e;考試時間90分鐘。3&#xff0e;卷面整潔&#xff0c;字跡工整。4&#xff0e;填寫內容不得超出密封線。總分題號一二三四五六核分人題分21204019復查人得分一、單選擇題(每題2分&…