精品欧美一区二区三区在线观看 _久久久久国色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)

免费在线看黄色片| 综合一区在线| 色狠狠av一区二区三区| 日韩在线欧美在线国产在线| 亚欧美一区二区三区| 福利写真视频网站在线| www..com久久爱| 国产精品久久久久不卡| 一级日本黄色片| 黄色录像a级片| 久草视频免费播放| 国产粉嫩一区二区三区在线观看| 好吊妞视频这里有精品| 蜜乳av一区二区| 欧美视频一区二区三区在线观看| 国产一区免费在线| 毛片基地在线观看| 欧洲激情综合| 日韩视频免费直播| 韩国一区二区av| 亚洲小说区图片区都市| 久久无码av三级| 2019日本中文字幕| www色aa色aawww| 超级碰碰久久| 综合干狼人综合首页| 亚洲欧美日韩一区二区| 成人淫片在线看| 最近免费中文字幕大全免费版视频| 国产精品伦理久久久久久| 日韩精品中文字| 欧美人与性动交α欧美精品| 中韩乱幕日产无线码一区| 日韩一级特黄| 久久精品国产第一区二区三区| 超碰91人人草人人干| 久久丫精品国产亚洲av不卡| 狂野欧美xxxx韩国少妇| 欧美私模裸体表演在线观看| 欧美久久久久久久久久久久久| 老司机精品视频在线观看6| 91色|porny| 不卡视频一区二区| 国产精品综合在线| 99av国产精品欲麻豆| 欧美日本亚洲视频| 日韩人妻无码精品综合区| 欧美精品密入口播放| 欧美一区二区三区免费视频| 伊人国产在线视频| 成人性片免费| 欧日韩精品视频| 成年人黄色片视频| 久久毛片亚洲| 色网站国产精品| 97在线免费公开视频| 国产乡下妇女做爰| 能在线看的av| 久久精品国产精品亚洲综合| 国产精品视频在线观看| 天天干天天色综合| 99亚洲精品| 国产91精品高潮白浆喷水| 日本三级中文字幕| 亚洲欧美日本视频在线观看| 欧美一级视频免费在线观看| 午夜影院在线看| 亚洲无线一线二线三线区别av| 日韩中文字幕国产精品| 欧美特黄一级片| japanese色系久久精品| 亚洲国产福利在线| 女~淫辱の触手3d动漫| 国产不卡一区| 国产亚洲视频在线观看| 日本免费网站视频| 午夜精品剧场| 91大神在线播放精品| 性欧美亚洲xxxx乳在线观看| 在线观看免费视频国产| 精品亚洲a∨一区二区三区18| 欧美视频三区在线播放| 午夜免费一级片| 日本亚州欧洲精品不卡| 精品久久一区二区三区| 色哟哟视频在线| 日韩精品影院| 亚洲综合色自拍一区| 国产精品国产亚洲精品看不卡| 1区2区3区在线视频| 亚洲成人av免费| 精品国产免费人成电影在线观...| 日本韩国在线观看| 国产欧美日韩视频一区二区| 在线观看免费91| 黄页网站在线| 欧美视频一二三区| 国产精品丝袜白浆摸在线| 国产精品嫩草影视| 欧美理伦片在线播放| 在线电影av不卡网址| 免费无码毛片一区二区app| 国产一区二区三区久久| 成人黄色免费看| 精品毛片在线观看| 久久久久国产精品麻豆| 91大学生片黄在线观看| 午夜伦理福利在线| 日韩一级片网站| 久久久视频6r| 午夜精品国产| 国产精品最新在线观看| 天天色综合久久| 亚洲三级理论片| 中文字幕乱码免费| 欧美精品资源| 日韩电影中文字幕| 91精品一区二区三区蜜桃| 久久www成人_看片免费不卡| 亚洲xxxx视频| 欧美成人hd| 五月综合激情婷婷六月色窝| 免费看黄色一级大片| 好吊妞国产欧美日韩免费观看网站| 色婷婷**av毛片一区| 黄色av一级片| 91丨porny丨户外露出| www.99riav| 国产不卡精品| www.色综合| 国产九色91回来了| 26uuu欧美日本| 久久久久久久午夜| 911精品国产| 欧美精品在线播放| 国产又粗又大又爽| 国产精品久久久久精k8| 成年人在线观看视频免费| 要久久电视剧全集免费| 91精品国产高清自在线| 乱精品一区字幕二区| 亚洲乱码中文字幕| 天天操精品视频| 国产精品成人一区二区不卡| 国产精品爽爽ⅴa在线观看| 成年人在线免费观看| 欧美在线观看一区| 六月婷婷七月丁香| 久久精品1区| 欧洲久久久久久| 成人va天堂| 亚洲人成电影在线播放| 成人免费视频国产免费| 国产亚洲欧美色| 日韩av手机版| 久久看人人摘| 91深夜福利视频| av片在线观看| 欧美大片一区二区| 国产午夜免费视频| 91蜜桃在线观看| 亚洲爆乳无码专区| 日韩精品一区二区三区免费观看| 国产精品视频网址| 久久国产精品一区| 欧美不卡激情三级在线观看| 国产午夜小视频| 久久久久88色偷偷免费| 最新中文字幕2018| 一区二区三区午夜视频| 国产高清精品一区二区| 久热在线观看视频| 国产一区二区三区三区在线观看| 中文字幕一区二区三区人妻四季| 国产精品久久久久久久岛一牛影视| 午夜免费一级片| 日韩一级免费| 日本一区二区三区精品视频| 四虎精品在线观看| 久久久久久中文字幕| 三级理论午夜在线观看| 欧美色综合网站| 九九热精品在线观看| 99riav久久精品riav| 天天操天天摸天天爽| 中国成人一区| 欧美日韩另类综合| 成人国产精品久久| 韩剧1988在线观看免费完整版| 免费一级在线观看播放网址| 在线播放中文一区| 永久免费看片在线播放| 国产精品婷婷午夜在线观看| 日本黄色三级网站| 久久一综合视频| 亚洲中文字幕无码一区二区三区 | 天天天综合网| 国产一区二区三区奇米久涩| 国产精品.xx视频.xxtv| 欧美激情精品久久久久久大尺度 | 久久久青草青青国产亚洲免观| 色一情一区二区| 一区二区三区高清视频在线观看| 亚洲激情一区二区三区| 动漫3d精品一区二区三区乱码| 国产精品久久久久久网站| 免费不卡av| 视频在线观看99| 性感美女一级片| 欧美一二三四区在线| 91黑人精品一区二区三区| 一区二区三区自拍| 超碰人人人人人人人| 99精品久久99久久久久| 毛片毛片毛片毛片毛| 性8sex亚洲区入口| 欧美图片激情小说| 一区二区三区午夜视频| 亚洲精品影院| 伊人久久大香线蕉av不卡| 高清免费日韩| 国产精品中文| 成人av资源在线播放| 日韩电影网站| 欧美中文字幕第一页| 午夜成年人在线免费视频| 日韩在线视频导航| av在线播放网| 亚洲精品网站在线播放gif| 黄片毛片在线看| 日韩午夜激情电影| 国产免费黄色大片| 欧美精品乱码久久久久久按摩| 成人h动漫精品一区二区下载| 精品久久久在线观看| 亚洲一区二区91| 一区二区三区日韩精品视频| 韩国一级黄色录像| 国产精品蜜臀在线观看| 中国特黄一级片| 国产精品久久久久永久免费观看| 黄免费在线观看| 国产亚洲欧洲997久久综合| 国产精品久久久久无码av色戒| 91在线国内视频| 亚洲av成人片色在线观看高潮| 成人精品国产一区二区4080| aaa黄色大片| 99视频一区二区| 中文在线一区二区三区| 不卡免费追剧大全电视剧网站| 国产在线不卡av| 成人精品视频一区二区三区尤物| 色综合久久久无码中文字幕波多| 国产99久久久精品| 中文字幕一区二区三区人妻在线视频| 国产成人免费视频网站 | av亚洲精华国产精华精| 污污内射在线观看一区二区少妇| www.日韩精品| 国产高清一区二区三区四区| 国产欧美日韩中文久久| 久久久久久久久久97| 亚洲欧美成人一区二区三区| 欧美精品xxxxx| 五月婷婷综合网| 日本精品入口免费视频| 欧美日韩在线电影| 国产麻豆91视频| 精品国产乱子伦一区| 超碰在线观看av| 日韩精品www| 成黄免费在线| 精品国产一区二区三区久久久狼| 中文字幕中文字幕在线中高清免费版| 欧美极品少妇xxxxⅹ免费视频| 夜鲁夜鲁夜鲁视频在线播放| 国产精品视频在线播放| 涩爱av色老久久精品偷偷鲁| 久久riav二区三区| 精品福利久久久| 亚洲成人动漫在线| 日韩天天综合| 亚洲黄色小视频在线观看| 国产精品1区2区3区| 少妇极品熟妇人妻无码| 久久久久久久久久久久久久久99 | 巨骚激情综合| 久久综合久久美利坚合众国| а√天堂中文在线资源8| 国产精品电影久久久久电影网| 日本免费一区二区三区视频| 欧美日韩大片一区二区三区| 久久久久国产精品| 国产精品后入内射日本在线观看| 久久精品国产精品亚洲综合| 中文在线永久免费观看| 综合久久综合久久| 中文字幕亚洲乱码| 蜜臀av一级做a爰片久久| 欧美精品久久99久久在免费线 | www.亚洲视频| 欧美精品videofree1080p| 暖暖成人免费视频| 99理论电影网| 亚洲国产国产| 欧洲av一区| 一区二区三区精品视频在线观看| av免费网站观看| 粉嫩蜜臀av国产精品网站| 久久日免费视频| 不卡影院免费观看| 国产xxxx视频| 欧美激情一区二区在线| 久久夜靖品2区| 91精品国产全国免费观看 | 51精品国产| 国产在线一区二区三区播放| 成人综合专区| 黄色a级片免费| 成人18视频在线播放| 国产稀缺精品盗摄盗拍| 欧美亚洲自拍偷拍| 欧美巨乳在线| 2024亚洲男人天堂| julia中文字幕一区二区99在线| 国产又爽又黄ai换脸| 日本欧美一区二区| 精品久久久噜噜噜噜久久图片| 日韩大片免费观看| 欧美成人精品不卡视频在线观看| 欧美gv在线观看| 91文字幕巨乱亚洲香蕉| 欧美激情偷拍自拍| 阿v天堂2017| 久久亚洲风情| 手机看片福利日韩| 色天下一区二区三区| 91黄色在线看| 国内欧美视频一区二区| 国产3级在线观看| 欧美日韩国产中文| 黄色在线网站| 欧美中在线观看| 女同另类激情重口| 欧美亚洲一二三区| 91麻豆6部合集magnet| 亚洲免费在线观看av| 91精品国产欧美日韩| 黄网站免费在线播放| 91九色国产在线| 日韩一区欧美| 欧美三级午夜理伦三级富婆| 国内精品国产三级国产a久久 | 欧美视频免费| 国产欧美精品aaaaaa片| 国产精品18久久久久久vr| 日本精品一二三区| 久久久久一区二区三区四区| 国产亚洲欧美精品久久久www| 精品久久久久99| 欧美男男激情videos| 欧美亚洲免费高清在线观看| 免费高清视频精品| caoporn91| 精品国产成人系列| 丝袜老师在线| 亚洲开发第一视频在线播放| 亚洲精品一区国产| 精品久久久久久久久久久院品网 | 日本久久久久久久久| 日韩精选在线| 日韩精品一区二区三区色欲av| 欧美国产乱子伦 | 久cao在线| 亚洲成人av片| 国产一二三在线| 在线观看一区不卡| 久热国产在线| av一区二区三区四区电影| 一区二区三区在线观看免费| 亚洲精品一二三四| 午夜精品福利一区二区三区av | 拍真实国产伦偷精品| 91在线视频导航| 亚洲专区一区| 性爱在线免费视频| 日韩视频免费观看高清完整版 | 福利电影一区| 少妇大叫太大太粗太爽了a片小说| 91日韩在线专区| 一区二区三区精彩视频| 亚州精品天堂中文字幕| 欧美日韩激情| 一边摸一边做爽的视频17国产| 激情婷婷久久| 99热一区二区三区| 91亚洲精品久久久蜜桃| 欧美性猛交xxxx乱大交hd| 久久亚洲精品成人|