百度地圖

慕課視頻:Android-百度地圖之導(dǎo)航
http://www.imooc.com/learn/670
Android 百度地圖 SDK v3.0.0
轉(zhuǎn)載鏈接【鴻神】:http://blog.csdn.net/lmj623565791/article/category/2392939
Android:百度地圖 點聚合功能
http://m.blog.csdn.net/article/details?id=52386097
百度地圖應(yīng)用實例操作
http://m.blog.csdn.net/blog/index?username=rt77777
android 獲取GPS經(jīng)緯度在百度地圖上繪制軌跡
http://m.blog.csdn.net/article/details?id=17842697
百度地圖應(yīng)用實例
http://www.reibang.com/p/ade5f2a7f320
Android地圖開發(fā)
http://blog.csdn.net/column/details/android-jacksen-map.html
百度地圖開發(fā)之實現(xiàn)運動軌跡 <一>
http://blog.csdn.net/u013430507/article/details/44064761
百度地圖開發(fā)之實現(xiàn)運動軌跡 <二>
http://blog.csdn.net/u013430507/article/details/44065409
Android 百度地圖 SDK v3.0.0 (二) 定位與結(jié)合方向傳感器
http://blog.csdn.net/u013430507/article/details/44065765
百度地圖開發(fā)文檔地址
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap
程序包api文檔
http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v4_3_0/index.html
《一》生成SHA1時注意:
keytool的使用:目錄下的keytool全路名
dubug版:keytool -list -v -keystore debug.keystore
注意:debug.keystore(默認沒有口令)
上線版:keytool -list -v -keystore 123.jks
口令就是keystore的密碼
《二》復(fù)制jar包
(1)直接復(fù)制BaiduMap_AndroidSDK_v4.2.1_Sample\BaiduMapsApiDemo\libs
目錄下的jar包《除去v4》
(2) 生成并粘貼main/jniLibs下面的so文件(5個)
《三》配置功能清單文件
權(quán)限以及《meta-data》替換成自己應(yīng)用生成的value值(key)
《四》布局layout中添加map組件
《五》添加圖層
獲取地圖的實例
//添加交通圖
mapView.setTrafficEnabled(true);
//mapView.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
/* //普通地圖
mapView.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//衛(wèi)星地圖
mapView.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
//空白地圖, 基礎(chǔ)地圖瓦片將不會被渲染菇爪。在地圖類型中設(shè)置為NONE撒强,將不會使用流量下載基礎(chǔ)地圖瓦片圖層爆土。
// 使用場景:與瓦片圖層一起使用疟位,節(jié)省流量晦譬,提升自定義瓦片圖下載速度锻煌。
mapView.setMapType(BaiduMap.MAP_TYPE_NONE);
//開啟交通圖 實時交通圖
mapView.setTrafficEnabled(true);
//開啟交通圖 百度城市熱力圖
mapView.setBaiduHeatMapEnabled(true);
《六》添加覆蓋物
//設(shè)置地圖點擊事件
mapView.setOnMapClickListener(new BaiduMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {//坐標(biāo)
mapView.clear();//清除地圖上的所有的覆蓋物
//創(chuàng)建一個覆蓋物的圖標(biāo)
BitmapDescriptor icon = BitmapDescriptorFactory
.fromResource(R.mipmap.ic_launcher);
//創(chuàng)建一個覆蓋物
OverlayOptions options =
new MarkerOptions().position(latLng).icon(icon);
//將覆蓋物添加到地圖中
mapView.addOverlay(options);
}
@Override
public boolean onMapPoiClick(MapPoi mapPoi) {
return false;
}
});
《七》添加覆蓋物的點擊事件
mapView.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(MainActivity.this, "別點我討厭X宰稹酌伊!", Toast.LENGTH_SHORT).show();
return false;
}
});
完整代碼:
public class MainActivity extends AppCompatActivity {

private BaiduMap mapView;
private MapView map;
private PoiSearch poiSearch;
private ShareUrlSearch shareUrlSearch;
private RoutePlanSearch routePlanSearch;
private GeoCoder geoCoder;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //在使用SDK各組件之前初始化context信息漫萄,傳入ApplicationContext
    //注意該方法要再setContentView方法之前實現(xiàn)
    SDKInitializer.initialize(getApplicationContext());
    setContentView(R.layout.activity_main);

    initView();

    initListener();

}

private void initListener() {
    //添加地圖的事件
    //initMapListener();
    //添加marker點擊事件
    //initMarkerListener();
    //檢索監(jiān)聽
    initPoiListener();
    //設(shè)置分享監(jiān)聽
    initShareListener();
    //創(chuàng)建線路規(guī)劃監(jiān)聽
    initRoutePlanListener();
    //地理編碼
    initGeoCoderListener();
}

private void initGeoCoderListener() {
    geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
        @Override
        public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
            Log.i("TAG", "onGetGeoCodeResult: "+geoCodeResult.getLocation().toString());
        }

        @Override
        public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
            String address = reverseGeoCodeResult.getAddress();
            Log.i("TAG", "onGetGeoCodeResult: ");
        }
    });
}

private void initRoutePlanListener() {
    routePlanSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {
        @Override
        public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {

            //步行路線結(jié)果回調(diào)
            if (walkingRouteResult == null ||
                    walkingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {
                return;
            }
            mapView.clear();

            WalkingRouteOverlay overly = new MyWalk(mapView);

            overly.setData(walkingRouteResult.getRouteLines().get(0));
            overly.addToMap();
            overly.zoomToSpan();
        }

        @Override
        public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
            //換乘路線結(jié)果回調(diào)
        }

        @Override
        public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
            //跨城公共交通路線結(jié)果回調(diào)
        }

        @Override
        public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
            //駕車路線結(jié)果回調(diào)
            //騎行路線回調(diào)
            if (drivingRouteResult == null ||
                    drivingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {
                return;
            }
            mapView.clear();
            DrivingRouteOverlay overlay = new MyDriver(mapView);
            overlay.setData(drivingRouteResult.getRouteLines().get(0));
            overlay.addToMap();
            overlay.zoomToSpan();
        }

        @Override
        public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {
            //室內(nèi)路線規(guī)劃回調(diào)
        }

        @Override
        public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {

            //騎行路線結(jié)果回調(diào)
            if (bikingRouteResult == null ||
                    bikingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {
                return;
            }
            mapView.clear();
            BikingRouteOverlay overlay = new MyBinking(mapView);
            overlay.setData(bikingRouteResult.getRouteLines().get(0));
            overlay.addToMap();
            overlay.zoomToSpan();
        }
    });
}

//創(chuàng)建步行路線覆蓋物
class MyWalk extends WalkingRouteOverlay {
    public MyWalk(BaiduMap baiduMap) {
        super(baiduMap);
    }
    @Override
    public boolean onPolylineClick(Polyline polyline) {
        return super.onPolylineClick(polyline);
    }
}


//創(chuàng)建架車路線覆蓋物
class MyDriver extends DrivingRouteOverlay {
    public MyDriver(BaiduMap baiduMap) {
        super(baiduMap);
    }
}
//創(chuàng)建步行路線覆蓋物
class MyBinking extends BikingRouteOverlay {

    public MyBinking(BaiduMap baiduMap) {
        super(baiduMap);
    }
}

//=======分享的第二個回調(diào)(shareUrl)==>url=====
private void initShareListener() {
shareUrlSearch.setOnGetShareUrlResultListener(
new OnGetShareUrlResultListener() {
@Override
public void onGetPoiDetailShareUrlResult(final ShareUrlResult shareUrlResult){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
""+shareUrlResult.getUrl(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onGetLocationShareUrlResult(ShareUrlResult shareUrlResult) {
}
@Override
public void onGetRouteShareUrlResult(ShareUrlResult shareUrlResult) {
}
});
}
//=============poi檢索監(jiān)聽==============
private void initPoiListener() {
poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
//獲取POI檢索結(jié)果
@Override
public void onGetPoiResult(PoiResult poiResult) {
//判斷是否有結(jié)果
if (poiResult == null || poiResult.error != SearchResult.ERRORNO.NO_ERROR) {
Log.v("TAG", "沒有找到相關(guān)搜索");
return;
}
//獲取檢索結(jié)果集
List<PoiInfo> list = poiResult.getAllPoi();
for (PoiInfo info : list) {
Log.i("TAG", "onGetPoiResult: " + info.name);
//添加標(biāo)注物
/* BitmapDescriptor bitmapDescriptor
= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
OverlayOptions options = new MarkerOptions().position(info.location)
.icon(bitmapDescriptor);
mapView.addOverlay(options);*/

                //添加系統(tǒng)提供的標(biāo)注物
                mapView.clear();
                MyOverly myOverly = new MyOverly(mapView);
                myOverly.setData(poiResult);
                myOverly.addToMap();
                myOverly.zoomToSpan(); //自動放大
                mapView.setOnMarkerClickListener(myOverly);
            }
        }
        //poi搜索的回調(diào)詳情  點擊的時候調(diào)用此方法
        @Override
        public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

//=======分享的第一個回調(diào)poi(PoiInfo)==》request(shareUrl)=====
shareUrlSearch.requestPoiDetailShareUrl(
new PoiDetailShareURLOption()
.poiUid(poiDetailResult.getUid()));

            /*shareUrlSearch.requestLocationShareUrl(
                    new LocationShareURLOption()
                            .location(poiDetailResult.getLocation())
                            .name("aaa").snippet("bbb"));*/
        }
        @Override
        public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
        }
    });
}
class MyOverly extends PoiOverlay {
    /**
     * 構(gòu)造函數(shù)
     *
     * @param baiduMap 該 PoiOverlay 引用的 BaiduMap 對象
     */
    public MyOverly(BaiduMap baiduMap) {
        super(baiduMap);
    }

    @Override
    public boolean onPoiClick(int i) {
        List<PoiInfo> allPoi = getPoiResult().getAllPoi();
        Toast.makeText(MainActivity.this,
                "" + allPoi.get(i).name, Toast.LENGTH_SHORT).show();
        //
        poiSearch.searchPoiDetail(
                    new PoiDetailSearchOption().poiUid(allPoi.get(i).uid));
        return super.onPoiClick(i);
    }
}

private void initMarkerListener() {
    mapView.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            Toast.makeText(MainActivity.this, "別點我討厭>碓薄!", Toast.LENGTH_SHORT).show();
            return false;
        }
    });
}

private void initMapListener() {
    //設(shè)置地圖點擊事件
    mapView.setOnMapClickListener(new BaiduMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {//坐標(biāo)
            mapView.clear();//清除地圖上的所有的覆蓋物
            //創(chuàng)建一個覆蓋物的圖標(biāo)
            BitmapDescriptor icon = BitmapDescriptorFactory
                    .fromResource(R.mipmap.ic_launcher);
            //創(chuàng)建一個覆蓋物
            OverlayOptions options =
                    new MarkerOptions().position(latLng).icon(icon);
            //將覆蓋物添加到地圖中
            mapView.addOverlay(options);
        }

        @Override
        public boolean onMapPoiClick(MapPoi mapPoi) {
            return false;
        }
    });
}
private void initView() {
    map = (MapView) findViewById(R.id.mapview);
    //獲取當(dāng)前的地圖
    mapView = map.getMap();

    //初始化POI檢索
    poiSearch = PoiSearch.newInstance();
    //初始化分享
    shareUrlSearch = ShareUrlSearch.newInstance();
    //創(chuàng)建線路規(guī)劃的實例
    routePlanSearch = RoutePlanSearch.newInstance();
    //地理編碼
    //地理編碼
    geoCoder = GeoCoder.newInstance();
}
/*
*
* 添加圖層
*
* */
public void btn1(View view) {
    //添加交通圖
    mapView.setTrafficEnabled(true);
    //mapView.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
   /* //普通地圖
    mapView.setMapType(BaiduMap.MAP_TYPE_NORMAL);
    //衛(wèi)星地圖
    mapView.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
    //空白地圖, 基礎(chǔ)地圖瓦片將不會被渲染腾务。在地圖類型中設(shè)置為NONE毕骡,將不會使用流量下載基礎(chǔ)地圖瓦片圖層。

// 使用場景:與瓦片圖層一起使用岩瘦,節(jié)省流量未巫,提升自定義瓦片圖下載速度。
mapView.setMapType(BaiduMap.MAP_TYPE_NONE);
//開啟交通圖 實時交通圖
mapView.setTrafficEnabled(true);
//開啟交通圖 百度城市熱力圖
mapView.setBaiduHeatMapEnabled(true);*/
}

/*
* 添加覆蓋物
*
* */
public void btn2(View view) {
    //添加Marker
   /* //經(jīng)緯度
    LatLng l = new LatLng(39.963175,116.400244);

    //創(chuàng)建一個覆蓋物的圖標(biāo)
    BitmapDescriptor icon = BitmapDescriptorFactory
            .fromResource(R.mipmap.ic_launcher);

    //創(chuàng)建一個覆蓋物
    OverlayOptions options = new MarkerOptions().position(l).icon(icon);

    //將覆蓋物添加到地圖中
    mapView.addOverlay(options);*/

    //添加幾何圖形
    //添加一個幾何圖形
    LatLng l1 = new LatLng(39.93925, 116.357428);

    LatLng l2 = new LatLng(39.90925, 116.327428);

    LatLng l3 = new LatLng(39.88925, 116.347428);

    //將三個坐標(biāo)添加到集合中
    List<LatLng> pt = new ArrayList<>();
    pt.add(l1);
    pt.add(l2);
    pt.add(l3);

    OverlayOptions options = new PolygonOptions().points(pt)
            //2 邊寬  和邊的顏色  启昧, fillColor(填充的顏色)
            .stroke(new Stroke(2, 0xAA00FF00)).fillColor(0xAA00FF00);

    mapView.addOverlay(options);
}


/*
* POI檢索
*
* */
public void btn3(View view) {

    //城市內(nèi)檢索
    /*
        PoiCitySearchOption city(java.lang.String city)
        檢索城市
        PoiCitySearchOption keyword(java.lang.String key)
        搜索關(guān)鍵字
        PoiCitySearchOption pageCapacity(int pageCapacity)
        設(shè)置每頁容量叙凡,默認為每頁10條
        PoiCitySearchOption pageNum(int pageNum)
        分頁編號
     */

    /*poiSearch.searchInCity(
            new PoiCitySearchOption().city("北京")
                    .keyword("ATM").pageNum(1).pageCapacity(10));*/

    /**
     keyword(java.lang.String key)
     檢索關(guān)鍵字
     PoiNearbySearchOption  location(LatLng location)
     檢索位置
     PoiNearbySearchOption  pageCapacity(int pageCapacity)
     設(shè)置每頁容量,默認為每頁10條
     PoiNearbySearchOption  pageNum(int pageNum)
     分頁編號
     PoiNearbySearchOption  radius(int radius)
     設(shè)置檢索的半徑范圍
     PoiNearbySearchOption  sortType(PoiSortType sortType)
     搜索結(jié)果排序規(guī)則密末,可選握爷,默認
     */

    //周邊檢索,有一個中心點
    LatLng l1 = new LatLng(39.93925, 116.357428);
    poiSearch.searchNearby(new PoiNearbySearchOption()
            .radius(10000).pageCapacity(10).pageNum(1).location(l1).keyword("美食"));
}


/*
* 路線規(guī)劃
* */
public void btn4(View view){
    //路線  第一個參數(shù)是cityCode
               第二個是具體地址
    PlanNode stNode = PlanNode.withCityCodeAndPlaceName(132, "xxxx");
    PlanNode endNode = PlanNode.withCityCodeAndPlaceName(132, "xxxx");

// routePlanSearch.transitSearch(new TransitRoutePlanOption()
// .city("北京").from(stNode).to(endNode));
routePlanSearch.drivingSearch(new DrivingRoutePlanOption()
.from(stNode).to(endNode));
// routePlanSearch.bikingSearch(new BikingRoutePlanOption().from(stNode).to(endNode));
}

/*
* 地理編碼
* */
public void btn5(View view){
    //將經(jīng)緯度轉(zhuǎn)找成地址
    geoCoder.reverseGeoCode(new ReverseGeoCodeOption()
            .location(new LatLng(39.946758,116.423134)));

    //將地址轉(zhuǎn)換成經(jīng)緯度

// geoCoder.geocode(new GeoCodeOption()
// .address("北京").city("北京"));
}

public void btn6(View view){
    onCreate();
}

public void btn7(View view){
    //開啟定位圖層
    mapView.setMyLocationEnabled(true);

}


public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();

public void onCreate() {
    mLocationClient = new LocationClient(getApplicationContext());
    //聲明LocationClient類
    mLocationClient.registerLocationListener( myListener );
    //注冊監(jiān)聽函數(shù)
    initLocation();
    mLocationClient.start(); //開啟定位
}

/*
* 設(shè)置locationClient的參數(shù)
*
* */
private void initLocation(){
    LocationClientOption option = new LocationClientOption();
    option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
    //可選严里,默認高精度新啼,設(shè)置定位模式,高精度刹碾,低功耗燥撞,僅設(shè)備
    option.setCoorType("bd09ll");
    //可選,默認gcj02迷帜,設(shè)置返回的定位結(jié)果坐標(biāo)系
    int span=1000;
    option.setScanSpan(span);
    //可選叨吮,默認0,即僅定位一次瞬矩,設(shè)置發(fā)起定位請求的間隔需要大于等于1000ms才是有效的
    option.setIsNeedAddress(true);
    //可選茶鉴,設(shè)置是否需要地址信息,默認不需要
    option.setOpenGps(true);
    //可選景用,默認false,設(shè)置是否使用gps
    option.setLocationNotify(true);
    //可選涵叮,默認false惭蹂,設(shè)置是否當(dāng)GPS有效時按照1S/1次頻率輸出GPS結(jié)果
    option.setIsNeedLocationDescribe(true);
    //可選,默認false割粮,設(shè)置是否需要位置語義化結(jié)果盾碗,可以在BDLocation.getLocationDescribe里得到,結(jié)果類似于“在北京天安門附近”
    option.setIsNeedLocationPoiList(true);
    //可選舀瓢,默認false廷雅,設(shè)置是否需要POI結(jié)果,可以在BDLocation.getPoiList里得到
    option.setIgnoreKillProcess(false);
    //可選京髓,默認true航缀,定位SDK內(nèi)部是一個SERVICE,并放到了獨立進程堰怨,設(shè)置是否在stop的時候殺死這個進程芥玉,默認不殺死
    option.SetIgnoreCacheException(false);
    //可選,默認false备图,設(shè)置是否收集CRASH信息灿巧,默認收集
    option.setEnableSimulateGps(false);
    //可選,默認false揽涮,設(shè)置是否需要過濾GPS仿真結(jié)果抠藕,默認需要
    mLocationClient.setLocOption(option);
}

/*
* 獲取定位的信息
* */
private boolean isFirst = true;
public class MyLocationListener implements BDLocationListener {

    @Override
    public void onReceiveLocation(BDLocation location) {
        //獲取定位結(jié)果
       /* StringBuffer sb = new StringBuffer(256);
        sb.append("time : ");
        sb.append(location.getTime());    //獲取定位時間
        sb.append(location.getAddrStr());
        String s = sb.toString();
        Log.i("BaiduLocationApiDem", sb.toString());*/

        // 構(gòu)造定位數(shù)據(jù)
        MyLocationData locData = new MyLocationData.Builder()
                //設(shè)置精確度
                .accuracy(location.getRadius())
                // 此處設(shè)置開發(fā)者獲取到的方向信息,順時針0-360
                .direction(100)
                //設(shè)置緯度
                .latitude(location.getLatitude())
                //設(shè)置經(jīng)度
                .longitude(location.getLongitude())
                .build();
        // 設(shè)置定位數(shù)據(jù)
        mapView.setMyLocationData(locData);

        if (isFirst){
            isFirst = false; //只會在第一次更新的時候才更新
            LatLng lat = new LatLng(location.getLatitude(),
                    location.getLongitude());
            //第一個參數(shù)是坐標(biāo)蒋困,第二個參數(shù)是縮放值
            MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(lat,13);
            mapView.animateMapStatus(mapStatusUpdate);
        }
    }
}



@Override
protected void onDestroy() {
    super.onDestroy();
    map.onDestroy();
    poiSearch.destroy();
}

@Override
protected void onPause() {
    super.onPause();
    map.onPause();
}

@Override
protected void onResume() {
    super.onStop();
    map.onResume();
}

}
開發(fā)中坑:
《坑一》安全碼校驗 MCodeCheck.apk幢痘,解決地圖不出現(xiàn)的原因
安全碼校驗是真實運行的SAH1,需要把創(chuàng)建應(yīng)用的SAH1覆蓋家破,地圖就會顯示
注冊配置的SHA1和運行的應(yīng)用的SAH1必須保持一致颜说,地圖才會出現(xiàn)
《坑二》參考:http://blog.csdn.net/taoolee/article/details/49361569
java.lang.IllegalArgumentException: No config chosen
異常的原因是SDK找不到支持OPENGL的硬件.從論壇得知,用戶鉤選了Use Host Gup 選項汰聋,此選項是說模擬器使用用戶物理機上的GPU门粪。如果用戶物理機沒有獨立顯卡,就會報錯烹困,此種情況下不鉤這個選項就可以了玄妈。模擬器設(shè)置問題,與sdk沒關(guān)系.

直白點就是模擬器不行: 需要真機測試
《坑三》6.0 動態(tài)申請定位權(quán)限

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末髓梅,一起剝皮案震驚了整個濱河市拟蜻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枯饿,老刑警劉巖酝锅,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奢方,居然都是意外死亡搔扁,警方通過查閱死者的電腦和手機爸舒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稿蹲,“玉大人扭勉,你說我怎么就攤上這事】疗福” “怎么了涂炎?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長设哗。 經(jīng)常有香客問我唱捣,道長,這世上最難降的妖魔是什么熬拒? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任爷光,我火速辦了婚禮垫竞,結(jié)果婚禮上澎粟,老公的妹妹穿的比我還像新娘。我一直安慰自己欢瞪,他們只是感情好活烙,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遣鼓,像睡著了一般啸盏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骑祟,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天回懦,我揣著相機與錄音,去河邊找鬼次企。 笑死怯晕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缸棵。 我是一名探鬼主播舟茶,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堵第!你這毒婦竟也來了吧凉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踏志,失蹤者是張志新(化名)和其女友劉穎阀捅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體针余,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡也搓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年赏廓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傍妒。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡幔摸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颤练,到底是詐尸還是另有隱情既忆,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布嗦玖,位于F島的核電站患雇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宇挫。R本人自食惡果不足惜苛吱,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望器瘪。 院中可真熱鬧翠储,春花似錦、人聲如沸橡疼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欣除。三九已至住拭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間历帚,已是汗流浹背滔岳。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挽牢,地道東北人谱煤。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像卓研,于是被迫代替她去往敵國和親趴俘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容