精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于MapBox在Android應(yīng)用中集成地圖支持

譯文
移動(dòng)開發(fā) Android
MapBox是一個(gè)開源的矢量地圖SDK。此框架的承諾是在開發(fā)視頻游戲方面將提供優(yōu)質(zhì)的渲染速度和平滑度。如果你有興趣將地圖功能集成到你的應(yīng)用程序,那么MapBox將是值得你考慮的選擇方案之一。

一、 簡(jiǎn)介

MapBox是一個(gè)開源的矢量地圖SDK。此框架的承諾是在開發(fā)視頻游戲方面將提供優(yōu)質(zhì)的渲染速度和平滑度。如果你有興趣將地圖功能集成到你的應(yīng)用程序,那么MapBox將是值得你考慮的選擇方案之一。

二、權(quán)限設(shè)置

首先需要說明的是,你可以從GitHub網(wǎng)站下載到本文提供的源代碼,地址是https://github.com/sitepoint-editors/MapBox-App

要想在你的應(yīng)用程序如使用Mapbox,你需要一個(gè)API訪問令牌。為此,你需要先創(chuàng)建一個(gè)Mapbox帳戶,你可以在網(wǎng)站https://www.mapbox.com/studio/account/tokens處找到你需要的有類數(shù)據(jù)。

然后,把令牌添加到你的Android程序的文件strings.xml中:

  1. <string name="accessToken">Your access token</string> 

接下來,在配置文件AndroidManifest.xml中加入如下所示的Internet和位置訪問權(quán)限:

 

  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  2. <uses-permission android:name="android.permission.INTERNET"/>   
  3. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
  4. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
  5. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

請(qǐng)注意:在Android Marshmallow (API 23)及更高的版本中在運(yùn)行時(shí)是需要上述權(quán)限的。

三、安裝MapBox

接下來,打開配置文件build.gradle(對(duì)應(yīng)于Module: app文件夾下的那個(gè)),添加對(duì)MapBox的依賴。請(qǐng)參考如下所示配置代碼:

  1. repositories { 
  2.     mavenCentral() 
  3. dependencies { 
  4.     . . .   
  5.     compile('com.mapbox.mapboxsdk:mapbox-android-sdk:3.2.0@aar') { 
  6.         transitive = true 
  7.    } 
  8.     compile ('com.mapbox.mapboxsdk:mapbox-android-directions:1.0.0@aar'){  
  9.         transitive=true 
  10.     } 

上面代碼中的***處配置描述了Mapbox,后面的配置則對(duì)應(yīng)于目錄庫(kù)(Directions library)描述,用于向應(yīng)用程序提供駕車、步行以及跨自行車等調(diào)用函數(shù),并支持在地圖中繪制其行蹤。

四、MapBox布局

接下來,打開布局文件content_main.xml,使用如下內(nèi)容替換原來的內(nèi)容:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     xmlns:mapbox="http://schemas.android.com/apk/res-auto" 
  4.     xmlns:tools="http://schemas.android.com/tools" 
  5.     android:layout_width="match_parent" 
  6.     android:layout_height="match_parent" 
  7.     tools:context="com.example.valdio.mapboxintegration.MainActivity" 
  8.     tools:showIn="@layout/activity_main"> 
  9.     <com.mapbox.mapboxsdk.views.MapView 
  10.         android:id="@+id/mapview" 
  11.         android:layout_width="fill_parent" 
  12.         android:layout_height="fill_parent" 
  13.         mapbox:access_token="@string/accessToken" /> 
  14. </RelativeLayout> 

接下來,初始化你需要在MainActivity文件中使用的變量:

  1. public class MainActivity extends AppCompatActivity { 
  2.   private MapView mapView = null
  3.   private String MAPBOX_ACCESS_TOKEN = ""
  4.   private DirectionsRoute currentRoute = null
  5.   ... 

接下來,在MainActivity.java文件中,把onCreate()方法中的創(chuàng)建工具欄和浮動(dòng)按鈕的代碼刪除,添加如下代碼來初始化地圖:

  1. String MAPBOX_ACCESS_TOKEN = getResources().getString(R.string.accessToken); 
  2. // Set up a standard Mapbox map 
  3. MapView mapView = (MapView) findViewById(R.id.mapview); 
  4. mapView.setAccessToken(MAPBOX_ACCESS_TOKEN); 
  5. mapView.setStyleUrl(Style.MAPBOX_STREETS); // specify the map style  
  6. mapView.setZoom(14); // zoom level  
  7. mapView.onCreate(savedInstanceState); 

Mapbox需要實(shí)現(xiàn)Activity的生命同期方法以避免運(yùn)行時(shí)錯(cuò)誤;因此,需要添加如下的重寫函數(shù):

  1. @Override  
  2. protected void onStart() {  
  3.     super.onStart();  
  4.     mapView.onStart();  
  5. @Override 
  6. protected void onStop() {  
  7.     super.onStop();  
  8.     mapView.onStop();  
  9. @Override  
  10. protected void onDestroy() { 
  11.     super.onDestroy();  
  12.     mapView.onDestroy();  
  13.  
  14. @Override  
  15. protected void onResume() { 
  16.     super.onResume(); 
  17.     mapView.onResume(); 
  18. @Override 
  19. protected void onPause() {  
  20.     super.onPause(); 
  21.     mapView.onPause(); 
  22.  
  23. @Override 
  24. protected void onSaveInstanceState(Bundle outState) {  
  25.     super.onSaveInstanceState(outState); 
  26.     mapView.onSaveInstanceState(outState); 

好了。現(xiàn)在配置好了Mapbox,可以構(gòu)建應(yīng)用程序了。

五、把標(biāo)記添加到地圖中

現(xiàn)在,請(qǐng)把如下代碼添加到MainActivity的onCreate函數(shù)的***部:

  1. @Override 
  2. protected void onStart() { 
  3.     super.onStart(); 
  4.     mapView.onStart(); 
  5. @Override  
  6. protected void onStop() { 
  7.     super.onStop(); 
  8.     mapView.onStop(); 
  9. @Override 
  10. protected void onDestroy() { 
  11.     super.onDestroy(); 
  12.     mapView.onDestroy(); 
  13. @Override 
  14. protected void onResume() {  
  15.     super.onResume();  
  16.     mapView.onResume();  
  17.  
  18. @Override  
  19. protected void onPause() {  
  20.     super.onPause(); 
  21.     mapView.onPause();  
  22.  
  23. @Override  
  24. protected void onSaveInstanceState(Bundle outState) { 
  25.     super.onSaveInstanceState(outState);  
  26.     mapView.onSaveInstanceState(outState);  

這段代碼中的CameraPosition是一個(gè)非常有用的Mapbox類,可用于設(shè)置用戶視圖的位置、角度、縮放和傾斜度,等等信息。

到現(xiàn)在,我們的地圖看起來是如下所示的模樣:

 

六、獲取設(shè)備位置

為了使Mapbox能夠訪問到設(shè)置的位置信息,必須啟動(dòng)設(shè)置的位置服務(wù),程序應(yīng)當(dāng)有使用它們的權(quán)限。如前面所提到的,在Android Marshmallow (API 23)及后續(xù)更高的版本中,在運(yùn)行時(shí)是需要這些權(quán)限的。

現(xiàn)在,我們來創(chuàng)建一個(gè)新的函數(shù),在其中加入取得當(dāng)前位置的代碼:

  1. private void myLocation() { 
  2.         if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
  3.             // TODO: Consider calling  
  4.             //    ActivityCompat#requestPermissions  
  5.             // here to request the missing permissions, and then overriding  
  6.             //   public void onRequestPermissionsResult(int requestCode, String[] permissions,  
  7.             //                                          int[] grantResults)  
  8.             // to handle the case where the user grants the permission. See the documentation  
  9.             // for ActivityCompat#requestPermissions for more details.  
  10.             return;  
  11.         } 
  12.         mapView.setMyLocationEnabled(true); 
  13.         mapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);  
  14.         mapView.getMyLocation();  
  15.     } 

然后,在地圖初始化代碼后添加如下函數(shù)調(diào)用:

  1. ...  
  2. mapView.onCreate(savedInstanceState);  
  3. myLocation(); 

在現(xiàn)在的情況中,我們把跟蹤方式設(shè)置為TRACKING_FOLLOW,這意味著用戶的位置將持續(xù)不斷地被監(jiān)控,而且地圖會(huì)不斷地隨著變化不斷更新。

七、在地圖上繪制線路

現(xiàn)在,我們創(chuàng)建了標(biāo)記與位置,接下來就是在地圖上繪制線路了。

這要使用前面在依賴性設(shè)置時(shí)所導(dǎo)入的第二個(gè)庫(kù)(Directions library),這也是Mapbox團(tuán)隊(duì)自行開發(fā)的。

下面描述了其工作原理:

1、創(chuàng)建兩個(gè)航點(diǎn)位置,一個(gè)是出發(fā)點(diǎn),一個(gè)對(duì)應(yīng)目的地。

2、創(chuàng)建一個(gè)MapboxDirections生成器對(duì)象,用于向Mapbox API發(fā)出網(wǎng)絡(luò)請(qǐng)求,其中的數(shù)據(jù)包含對(duì)應(yīng)于出發(fā)點(diǎn)和目的點(diǎn)的航點(diǎn)位置信息,還有方向路線有關(guān)的配置信息(駕駛、步行或騎自行車等)。

3、異步執(zhí)行方向要求。其中,MapboxDirections類提供了一個(gè)使用Retrofit API的內(nèi)置的異步請(qǐng)求。具體地說,是使用enqueue()函數(shù)來執(zhí)行請(qǐng)求。

4、OnResponse()方法返回Retrofit響應(yīng)結(jié)果,這是一個(gè)標(biāo)準(zhǔn)的JSON API響應(yīng)。

5、響應(yīng)正文中包含位置坐標(biāo)對(duì)信息,稍后這些坐標(biāo)將繪制在地圖上。

6、采用Mapbox Polyline函數(shù)把坐標(biāo)繪制在地圖上。折線(Polyline)是一種幾何特征,通過多條線段首尾相連而形成一條不封閉的折線。

為了使用Direction庫(kù),我們需要獲得設(shè)備的位置作為起源航點(diǎn),以及由用戶通過長(zhǎng)按方式來指定目的地航點(diǎn)的位置信息。

八、加入航點(diǎn)位置并在目標(biāo)地添加標(biāo)記

現(xiàn)在,請(qǐng)把如下代碼添加到onCreate方法的***面:

  1. mapView.setOnMapLongClickListener(new MapView.OnMapLongClickListener() {  
  2.     @Override  
  3.     public void onMapLongClick(LatLng point) { 
  4.         //Remove previously added markers  
  5.         //Marker is an annotation that shows an icon image at a geographical location  
  6.         //so all markers can be removed with the removeAllAnnotations() method. 
  7.          mapView.removeAllAnnotations();  
  8.         // Set the origin waypoint to the devices location  
  9.         Waypoint origin = new Waypoint(mapView.getMyLocation().getLongitude(), mapView.getMyLocation().getLatitude());  
  10.         // Set the destination waypoint to the location point long clicked by the user  
  11.         Waypoint destination = new Waypoint(point.getLongitude(), point.getLatitude());  
  12.         // Add marker to the destination waypoint  
  13.         mapView.addMarker(new MarkerOptions()  
  14.                 .position(new LatLng(point))  
  15.                 .title("Destination Marker") 
  16.                 .snippet("My destination")); 
  17.         // Get route from API 
  18.         getRoute(origin, destination);     } 
  19.  
  20. }); 

九、創(chuàng)建MapboxDirections網(wǎng)絡(luò)請(qǐng)求并異步運(yùn)行

接下來,再創(chuàng)建一個(gè)如下所示的方法,以便取得***路由信息:

  1. private void getRoute(Waypoint origin, Waypoint destination) { 
  2.   MapboxDirections directions = new MapboxDirections.Builder()  
  3.           .setAccessToken(MAPBOX_ACCESS_TOKEN) 
  4.           .setOrigin(origin) 
  5.           .setDestination(destination)  
  6.           .setProfile(DirectionsCriteria.PROFILE_WALKING)  
  7.           .build(); 
  8.   directions.enqueue(new Callback<DirectionsResponse>() {  
  9.       @Override  
  10.       public void onResponse(Response<DirectionsResponse> response, Retrofit retrofit) {  
  11.           // Display some info about the route  
  12.           currentRoute = response.body().getRoutes().get(0); 
  13.           showToastMessage(String.format("You are %d meters \nfrom your destination", currentRoute.getDistance()));     
  14.           // Draw the route on the map  
  15.           drawRoute(currentRoute);  
  16.       } 
  17.       @Override  
  18.       public void onFailure(Throwable t) { 
  19.           showToastMessage("Error: " + t.getMessage());  
  20.       }  
  21.   });  

十、使用地圖上的坐標(biāo)點(diǎn)繪制折線

再添加一個(gè)如下方法來實(shí)現(xiàn)路由繪制:

  1. private void drawRoute(DirectionsRoute route) {  
  2.   // Convert List<Waypoint> into LatLng[]  
  3.   List<Waypoint> waypoints = route.getGeometry().getWaypoints();  
  4.   LatLng[] point = new LatLng[waypoints.size()];  
  5.   for (int i = 0; i < waypoints.size(); i++) {  
  6.       point[i] = new LatLng(  
  7.               waypoints.get(i).getLatitude(),  
  8.               waypoints.get(i).getLongitude());  
  9.   }
  10.    // Draw Points on MapView  
  11.   mapView.addPolyline(new PolylineOptions()  
  12.           .add(point)  
  13.           .color(Color.parseColor("#38afea"))  
  14.           .width(5));  
  15. private void showToastMessage(String message) {  
  16.   Toast.makeText(this, message, Toast.LENGTH_SHORT).show();  

好了,現(xiàn)在運(yùn)行你的工程。在地圖上選擇兩個(gè)點(diǎn),你會(huì)觀察到類似于下圖所示結(jié)果:

十一、小結(jié)

本文中,我們介紹了使用MapBox SDK及其Directory庫(kù)的基本知識(shí)。其實(shí),MapBox還有更多更豐富的內(nèi)容可應(yīng)用于你的程序中,例如不同的地圖風(fēng)格,實(shí)現(xiàn)定制的矢量地圖繪制等等。

作為本文補(bǔ)充,我還推薦另一個(gè)庫(kù)Geocoding(https://github.com/mapbox/mapbox-geocoder-android)。這個(gè)庫(kù)可以把坐標(biāo)信息轉(zhuǎn)換成地圖,或者實(shí)現(xiàn)相反的轉(zhuǎn)換。當(dāng)然,要想了解更多的有關(guān)MapBox信息,建議學(xué)習(xí)其移動(dòng)應(yīng)用有關(guān)實(shí)例(https://www.mapbox.com/mobile/)。在這個(gè)網(wǎng)址中你會(huì)發(fā)現(xiàn)更多的庫(kù)可用。

責(zé)任編輯:李英杰 來源: 51CTO
相關(guān)推薦

2009-01-03 15:01:16

ibmdwLptus

2009-06-23 09:33:20

FCKEditorJSFJSP

2009-06-01 16:18:30

SpringJPA集成

2011-07-20 17:10:05

iPhone iAd

2009-01-03 14:43:55

ibmdwPHPsMash

2014-09-28 14:53:39

滲透BurpSuiteSqlmap

2011-06-29 09:42:12

Visual Stud Qt Opensource

2009-06-11 13:28:18

Glassfish集成

2012-10-18 10:12:42

IBMdw

2011-03-04 09:40:42

AJAX開發(fā)集成數(shù)據(jù)庫(kù)

2023-03-13 00:16:28

2024-01-31 09:42:11

RabbitMQ消息隊(duì)列.NET

2023-12-26 14:52:52

谷歌

2011-03-02 17:42:35

2011-08-23 09:50:29

LuaPlusLua 腳本

2018-01-02 08:30:45

IntelCPU

2012-06-07 09:57:13

Android版Goo

2021-03-17 08:07:56

Python可視化工具

2014-12-31 09:56:29

Ehcache

2025-02-27 00:00:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

99v久久综合狠狠综合久久| 亚洲私人影院| 日韩精品一区二区在线| 大西瓜av在线| 国产黄色在线| 国产成人精品免费网站| 国产97在线观看| 欧美人禽zoz0强交| 欧美三级电影在线| 欧美日本在线一区| 99福利在线观看| 男人在线资源站| 成人一级黄色片| 国产欧美日韩精品在线观看| 日韩黄色a级片| 国产精品99一区二区三区| 亚洲国产高清福利视频| 五月天av在线播放| 涩涩在线视频| 亚洲图片欧美一区| 亚洲最大色综合成人av| 午夜影院在线视频| 国产成人无遮挡在线视频| 国产v综合v亚洲欧美久久| 久久久久亚洲av无码专区| 欧美一区三区| 亚洲美女av在线播放| 年下总裁被打光屁股sp| www.欧美| 欧美日韩免费观看一区二区三区| 久久黄色片视频| а天堂中文在线官网| 欧美国产欧美综合| 久久久久久久有限公司| 人妻妺妺窝人体色www聚色窝| 久久99精品国产| 国产精品人成电影在线观看| 国产免费观看av| 一区免费视频| 久久久久久中文| 青娱乐av在线| 国产精品v欧美精品v日本精品动漫| 色播久久人人爽人人爽人人片视av| 草草地址线路①屁屁影院成人| 51社区在线成人免费视频| 6080日韩午夜伦伦午夜伦| 91在线视频观看免费| 粉嫩一区二区三区| 色婷婷综合激情| 日本精品免费在线观看| 午夜裸体女人视频网站在线观看| 亚洲mv大片欧洲mv大片精品| 成人免费性视频| 毛片大全在线观看| 亚洲国产成人av网| av免费观看大全| 中文字幕21页在线看| 色综合天天综合网国产成人综合天| 精品久久一二三| 一区二区三区电影大全| 一本一本大道香蕉久在线精品 | 国产一区深夜福利| 亚洲一区二区影视| 国产精品资源网站| 成人av资源| 天天干天天草天天射| 97久久人人超碰| 欧美日韩一区在线视频| 粉嫩av一区| 国产精品另类一区| 9191国产视频| 阿v视频在线观看| 日韩欧亚中文在线| 中文字幕第36页| 国产精一区二区| 亚洲电影在线看| 国产精品久久久久无码av色戒| 精品不卡一区| 久久亚洲欧美日韩精品专区| 国产大片中文字幕| 天堂一区二区在线免费观看| 国产精品高潮粉嫩av| 亚洲网站免费观看| 成人中文字幕合集| 欧美中日韩免费视频| 免费黄色网页在线观看| 亚洲一本大道在线| 一区二区三区国产免费| 不卡精品视频| 亚洲精品自产拍| 波多野结衣久久久久| 国产欧美午夜| 国产欧美日韩综合精品| 国产91久久久| 中文字幕+乱码+中文字幕一区| 青青视频免费在线| 日韩网站中文字幕| 精品国产乱码久久久久久图片| 国产肥白大熟妇bbbb视频| 亚洲免费二区| 日本欧美一二三区| 高潮毛片7777777毛片| 国产女人18毛片水真多成人如厕| 黄色高清视频网站| 欧美gay囗交囗交| 日韩欧美中文字幕制服| 女女互磨互喷水高潮les呻吟| 91精品久久久久久久蜜月| 51午夜精品视频| 国产精品爽爽久久| 2020日本不卡一区二区视频| 黄色一级视频播放| 欧美性片在线观看| 日韩精品在线电影| 欧美片一区二区| 免费成人在线观看| 国产专区一区二区| 中中文字幕av在线| 欧美午夜片在线看| 中文精品在线观看| 精品99视频| 91久久精品国产| 国产福利在线观看| 欧美日韩在线第一页| 一区二区三区人妻| 99热国内精品| 国产精品久久久久久久久男| 四虎影视精品成人| 亚洲国产精品一区二区久久恐怖片| 99热一区二区| 色777狠狠狠综合伊人| 国产成人精品优优av| 免费观看黄色一级视频| 亚洲香蕉伊在人在线观| 波多野结衣电影免费观看| 四季av一区二区凹凸精品| 日本a级片电影一区二区| 欧美一级特黄aaaaaa| 亚洲婷婷在线视频| 欧美大片久久久| 日韩久久视频| 国产日产欧美精品| 午夜在线视频播放| 欧美日韩高清在线播放| 国产主播av在线| 蜜桃av一区二区在线观看| 欧美一进一出视频| 第84页国产精品| 亚洲欧洲日本专区| 波多野结衣大片| 国产日韩欧美综合一区| 久久久精品麻豆| 日韩专区精品| 成人写真福利网| av文字幕在线观看| 欧美大片国产精品| 久久无码精品丰满人妻| 成人精品视频网站| 免费看国产一级片| 国产日产一区| 国产精品偷伦一区二区| 国产高清一区二区三区视频| 91精品综合久久久久久| 九九九在线视频| 99麻豆久久久国产精品免费| 欧美 日本 亚洲| 国产日韩欧美一区二区三区| 国产精品一久久香蕉国产线看观看| 素人av在线| 欧美一区二区三区啪啪| 精品深夜av无码一区二区老年| 福利91精品一区二区三区| 日韩五码在线观看| 欧洲激情视频| 91中文字幕在线| caoprom在线| 亚洲日韩欧美视频一区| 91丨porny丨在线中文| 亚洲视频在线观看三级| 欧美熟妇精品一区二区蜜桃视频| 欧美亚洲视频| 久久av喷吹av高潮av| 精品欧美午夜寂寞影院| 国产成人精品午夜| 视频在线这里都是精品| 亚洲精选中文字幕| 国产又色又爽又黄又免费| 亚洲国产精品欧美一二99| 国产免费看av| 国产精品亚洲人在线观看| 欧美丰满熟妇bbbbbb百度| 日韩国产在线| 国产精品制服诱惑| 成人免费黄色| 午夜伦理精品一区| 香蕉视频国产在线观看| 亚洲成人黄色在线| 亚洲天堂视频在线| 欧美日韩美女在线观看| av最新在线观看| 99国产麻豆精品| 日韩欧美中文视频| 日韩黄色免费电影| 成人性免费视频| 亚洲综合五月| 日韩av高清| 福利电影一区| 91久久国产精品| 亚洲播播91| 性欧美激情精品| free性欧美hd另类精品| 一二美女精品欧洲| 天堂中文资源在线观看| 欧美精品三级日韩久久| 国产真人无遮挡作爱免费视频| 一区二区国产视频| 欧美性生交大片| 久久久综合视频| 911亚洲精选| 国产一区二区三区日韩| 国产又大又黄又粗的视频| 亚洲激情欧美| 日韩人妻一区二区三区蜜桃视频| 日韩欧美字幕| 欧美日韩在线精品一区二区三区| 99re6热只有精品免费观看| 国产日韩精品在线播放| 秋霞国产精品| 日产日韩在线亚洲欧美 | 欧洲精品久久久| 丁香花高清在线观看完整版| 久久久精品在线观看| 一区二区高清不卡| 怡红院精品视频| 国产露出视频在线观看| 日韩精品高清在线| 欧美一区,二区| 精品国产自在久精品国产| 99久久精品国产成人一区二区| 欧美三级中文字| 欧美在线视频精品| 在线看国产日韩| 欧美男人天堂网| 欧美色播在线播放| 久久国产视频精品| 色国产精品一区在线观看| 精品久久久久久久久久久久久久久久久久| 欧美日韩国产中文字幕| 精品美女久久久久| 精品久久久中文| 国产精品人人人人| 日韩欧美在线一区| 成人公开免费视频| 欧美日韩综合色| 国产一区二区在线视频观看| 制服丝袜在线91| 99热这里只有精| 精品久久久久香蕉网| 精品国产亚洲一区二区麻豆| 欧美一级欧美三级在线观看| 国产自产一区二区| 国产丝袜视频一区| 国产综合视频一区二区三区免费| 中文字幕在线看视频国产欧美| 欧美13一16娇小xxxx| 九色成人免费视频| 678在线观看视频| 日本电影亚洲天堂| 久久久久久久性潮| 99久久免费国| 亚洲品质自拍| 亚洲欧美日韩综合一区| 欧美a级在线| aa在线观看视频| 青青国产91久久久久久| 九色91porny| 99久久伊人网影院| 一级肉体全黄裸片| 亚洲精品国产无天堂网2021| 日韩黄色一级大片| 欧美日韩日日骚| 丰满肥臀噗嗤啊x99av| 一本一道久久a久久精品逆3p| 国产传媒在线播放| 97视频网站入口| 岛国精品在线| 国产精品久久7| 国产一区二区三区四区五区| 第九区2中文字幕| 免费在线播放第一区高清av| 亚洲美女性囗交| 99国产精品久久久久久久久久| 五月婷六月丁香| 亚洲一区二区三区精品在线| 欧美一区二区三区久久久| 日韩三级中文字幕| 久草福利在线视频| 欧美人与性动交| 日本精品在线中文字幕| 成人免费在线看片| 欧美日韩伦理| 欧美一级在线看| 国产剧情一区二区| 乐播av一区二区三区| 亚洲午夜精品一区二区三区他趣| 日本视频www色| 亚洲黄色av女优在线观看| 高清免费电影在线观看| 日韩av男人的天堂| 久久a级毛片毛片免费观看| 一级日韩一区在线观看| 久久久久久黄| 国产激情视频网站| 亚洲精品网站在线观看| 伊人免费在线观看| 精品调教chinesegay| 牛牛电影国产一区二区| 成人羞羞国产免费| 欧美日韩性在线观看| 99福利在线观看| 91一区一区三区| 久久久全国免费视频| 欧美一区二区三区在线观看视频 | 久久精品国产亚洲一区二区| 国产不卡网站| 久久精品一二三区| 亚洲视屏一区| 中文字幕在线观看91| 亚洲精品免费在线观看| 波多野结衣人妻| 亚洲日本欧美中文幕| 欧美大电影免费观看| 激情欧美一区二区三区中文字幕| 亚洲先锋影音| 国产5g成人5g天天爽| 日韩一区在线免费观看| 亚洲天堂男人网| 精品国产一区二区三区在线观看| 精品无人乱码一区二区三区| 日韩av影视| 日韩福利电影在线观看| 亚洲ⅴ国产v天堂a无码二区| 日本久久电影网| 91精彩视频在线播放| 国产精品女主播视频| 欧美亚洲在线日韩| 手机免费av片| 亚洲欧洲综合另类在线| 国产女人爽到高潮a毛片| 久久国产精品亚洲| 亚洲五码在线| 毛片在线播放视频| 久久一夜天堂av一区二区三区| 国产精品久久久久久久久久久久久久久久久 | 午夜视频在线观看一区二区| 国产自产一区二区| 国产91精品视频在线观看| 九九精品在线| 久久久精品麻豆| 1024精品合集| 性猛交富婆╳xxx乱大交天津| 久久久久久亚洲精品不卡| 欧美一区二区三区红桃小说| 国语对白做受xxxxx在线中国| 国产三级久久久| 国产一区二区三区三州| 欧美精品午夜视频| 欧美自拍视频| 日本免费观看网站| 一区二区三区四区激情| 亚洲国产精品久久久久久久| 51色欧美片视频在线观看| 红桃视频在线观看一区二区| av免费一区二区| 亚洲午夜av在线| 国产精品久久久久一区二区国产 | 久久九九热re6这里有精品| 日韩av黄色网址| 国产精品久久一级| 性一交一乱一伧老太| 热久久这里只有| 国产精品久久天天影视| 97人妻精品一区二区三区免费| 色香蕉久久蜜桃| 成人短视频在线| 免费国产一区二区| 国产一区二区三区在线观看精品| 国产手机在线视频| xxx一区二区| 香蕉久久夜色精品国产更新时间| 女人高潮一级片| 欧美日韩免费看| 性欧美猛交videos| 色播亚洲婷婷| www.久久精品| 91在线公开视频| 奇米4444一区二区三区| 一本精品一区二区三区| 久久午夜福利电影| 精品国产乱码久久久久久图片 |