Android应用中使用百度地图API之POI(三)
先看执行后的图吧:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFqaWFuamll/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
POI(Point of Interest)。中文能够翻译为“兴趣点”。在地理信息系统中。一个POI能够是一栋房子、一个商铺、一个邮筒、一个公交站等 具体:http://developer.baidu.com/map/sdkandev-4.htm
主要应用 MKSearch 类:
类 MKSearch
- java.lang.Object
- com.baidu.mapapi.search.MKSearch
public class MKSearch
extends java.lang.Object搜索服务.用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索
字段概要
字段 限定符和类型 字段和说明 static int
EBUS_NO_SUBWAY
公交检索策略常量:不含地铁static int
EBUS_TIME_FIRST
公交检索策略常量:时间优先static int
EBUS_TRANSFER_FIRST
公交检索策略常量:最少换乘static int
EBUS_WALK_FIRST
公交检索策略常量:最少步行距离static int
ECAR_AVOID_JAM
驾车策略: 躲避拥堵static int
ECAR_DIS_FIRST
驾乘检索策略常量:最短距离static int
ECAR_FEE_FIRST
驾乘检索策略常量:较少费用static int
ECAR_TIME_FIRST
驾乘检索策略常量:时间优先static int
POI_DETAIL_SEARCH
poi具体信息检索页面static int
TYPE_AREA_MULTI_POI_LIST
多keyword范围搜索、周边搜索poi列表static int
TYPE_AREA_POI_LIST
范围搜索、周边搜索poi列表static int
TYPE_CITY_LIST
城市列表static int
TYPE_POI_LIST
城市内搜索poi列表
方法概要
限定符和类型 | 方法和说明 |
---|---|
int |
busLineSearch(java.lang.String city,
公交路线具体信息搜索 异步函数。返回结果在MKSearchListener里的onGetBusDetailResult方法通知
|
void |
destory()
销毁MKSearch 模块 , 当不再使用Search 功能时。须要调用此函数
|
int |
drivingSearch(java.lang.String startCity, MKPlanNode start,
驾乘路线搜索.
|
int |
drivingSearch(java.lang.String startCity, MKPlanNode start,
驾车路线搜索,可设置途经点 异步函数。返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
|
int |
geocode(java.lang.String strAddr,
依据地址名获取地址信息 异步函数,返回结果在MKSearchListener里的onGetAddrResult方法通知
|
int |
getPoiPageCapacity()
返回每页容量
|
int |
goToPoiPage(int num)
获取指定页的的poi结果.
|
boolean |
init(BMapManager bmapMan, MKSearchListener listener)
初使化,使用完毕后。请调用 destroy 函数释放资源
|
int |
poiDetailSearch(java.lang.String uid)
poi具体信息检索
|
boolean |
poiDetailShareURLSearch(java.lang.String poiUid)
获取POI信息共享短url.
|
boolean |
poiRGCShareURLSearch(GeoPoint location,
获取地址信息共享短URL.
|
int |
poiSearchInbounds(java.lang.String key, GeoPoint ptLB, GeoPoint ptRT)
依据范围和检索词发起范围检索.
|
int |
poiSearchInCity(java.lang.String city,
城市poi检索.
|
int |
poiSearchNearBy(java.lang.String key, GeoPoint pt,
依据中心点、半径与检索词发起周边检索.
|
int |
reverseGeocode(GeoPoint pt)
依据地理坐标点获取地址信息 异步函数,返回结果在MKSearchListener里的onGetAddrResult方法通知
|
int |
setDrivingPolicy(int policy)
设置驾车路线规划策略.
|
void |
setPoiPageCapacity(int num)
设置每页容量.
|
int |
setTransitPolicy(int policy)
设置路线规划策略.
|
int |
suggestionSearch(java.lang.String key,
联想词检索,依据模糊的不完备的检索词返回精确的建议搜索词 异步函数,返回结果在MKSearchListener里的onGetSuggestionResult方法通知
|
int |
transitSearch(java.lang.String city, MKPlanNode start, MKPlanNode end)
公交路线搜索.
|
int |
walkingSearch(java.lang.String startCity, MKPlanNode start,
步行路线搜索.
|
通过上面的阅读应该有所了解了吧,直接代码了。
。
这里的代码和前面(http://blog.csdn.net/majianjie/article/details/27958929)的代码变化不大:
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(); <span style="color:#ff6666;"> //POI
private MKSearch mMKSearch = null;
private Spinner detail;
private List<String> poi;
private ArrayAdapter< String> adapter;
private String poiName="";</span> @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); <span style="color:#ff6666;"> //poi
mMKSearch = new MKSearch();
detail=(Spinner)findViewById(R.id.detail);
poi = new ArrayList<String>();
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("超市");
</span> adapter=new ArrayAdapter<String>(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<OverlayItem>)效率更高
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;
} }
有关性能的优化,这里不多解说,正在学习中。
。。/呵呵
Android应用中使用百度地图API之POI(三)的更多相关文章
- Android应用中使用百度地图API并加入标注(一)
网上一些资料这样的的内容已经过时了,这里是最新的内容,假设哪里不正确,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就须要 ...
- Android应用中使用百度地图API定位自己的位置(二)
官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发人员们提供了例如以下类型的地图覆盖物: ...
- React中使用百度地图API
今天我们来搞一搞如何在React中使用百度地图API好吧,最近忙的头皮发麻,感觉身体被掏空,所以很久都没来写博客了,但今天我一定要来一篇好吧 话不多说,我们直接开始好吧 特别注意:该React项目是用 ...
- 如何在网页中调用百度地图api
我想在木有提供地图接口的年代,前端工程师门要么只写上企业的具体地址,要么就是用一张标有自己位置的地图图片.但是现在不一样啦!为了增强用户体验,谷歌,甚至百度都很开放了,你可以在他们的网站上找到地图接口 ...
- 如何在网中使用百度地图API自定义个性化地图
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- <Android 应用 之路> 百度地图API使用(2)
简介 上一篇只是大致的提一下百度地图API的Android SDK的基本内容,然后抄袭一个官网上的Demo,今天看一下百度地图的第一部分,地图类型和基本的显示. 简单实战 不同类型地图的显示 //设置 ...
- ASP.NET中调用百度地图API
1.打开链接http://developer.baidu.com/map/jshome.htm这里有很多DEMO,或者你直接百度搜索“百度地图API”,第一个就是.进入后有很多方向供你选择,由于现在开 ...
- <Android 应用 之路> 百度地图API使用(4)
前言 百度地图的定位功能和基础地图功能是分开的,使用的是另外的jar包和so库文件,详情请关注官网: 百度定位SDK 配置 下载对应的jar包和so库,然后移动到lib目录下 AS中注意事项 sour ...
- <Android 应用 之路> 百度地图API使用(1)
简介 详情请看百度地图官方网站 http://lbsyun.baidu.com/index.php?title=androidsdk/guide/introduction 使用方式 申请密钥,针对移动 ...
随机推荐
- ( 转 ) 优秀REST风格 API的设计原则
设计优秀的REST风格API非常困难!API是服务提供方和使用方之间的契约,打破该契约将会给服务端开发人员招来非常大的麻烦,这些麻烦来自于使用API的开发人员,因为对API的改动会导致他们的移动app ...
- Xamarin XAML语言教程ContentView视图作为自定义视图的父类
Xamarin XAML语言教程ContentView视图作为自定义视图的父类 自定义视图的父类:ContentView视图可以作为自定义视图的父类. [示例14-2]以下将自定义一个颜色视图.具体的 ...
- 【扩展欧几里得】poj2115 C Looooops
题意大概是让你求(A+Cx) mod 2^k = B的最小非负整数解. 若(B-A) mod gcd(C,2^k) = 0,就有解,否则无解. 式子可以化成Cx + 2^k*y = B - A,可以用 ...
- 【后缀数组】bzoj2217 Secretary
考虑简化问题:计算一个字符串中至少出现两次的最长子串.答案一定会在sa中相邻两个后缀的lcp中.因为后缀的位置在sa中相距越远,其lcp的长度就越短,这是由于字典序的性质决定的. 于是,在s1和s2中 ...
- 1.2(学习笔记)Servlet基础(doGet、doPost、生命周期、页面跳转)
一.doGet()与doPost() 我们在TestServlet类中重写doGet().doPost().service(). import javax.servlet.ServletExcepti ...
- maven-pom-profile
出处: http://blog.csdn.net/taiyangdao/article/details/52390095
- [转载]iOS6新特征:UICollectionView官方使用示例代码研究
原文地址:iOS6新特征:UICollectionView官方使用示例代码研究作者:浪友dans 注:这里是iOS6新特征汇总贴链接 iOS6新特征:参考资料和示例汇总 这个链接可以学习到UIColl ...
- jquery如何判断元素是否被点击、属性操作、class操作
1.通过点击事件发生后,改变标志位的值,记录点击状态 function(){ var isClick = false; $('#test').click(function(){isClick = tr ...
- 常见的七大排序算法Java实现
/** * @author Javen * @Email javenlife@126.com * 2015年12月9日 */ public class Sorting { static int[] a ...
- 编程算法 - 和为s的两个数字 代码(C)
和为s的两个数字 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个递增排序的数组和一个数字s, 在数组中查找两个数, 使得它们的和正好是 ...