日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java实现Google的S2算法工具类

發布時間:2024/3/13 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实现Google的S2算法工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WGS84坐標系 GCJ02坐標系 BD09坐標系的各種轉換

WGS84坐標系 GCJ02坐標系 BD09坐標系的各種轉換 Google S2 經緯度 轉 CellId 經緯度 轉 cellToken CellId 轉 經緯度 判斷當前cellId的level * 獲取任意形狀內所有S2塊 * 可以用于區域內目標檢索,根據cellid建立索引,查詢區域內cellid in (list)的區域 S2計算點距離 計算地球上某個點是否在矩形區域內 計算點s2是否在圓中心為s1半徑為capHeight的圓形區域內 判斷點是否在任意形狀內 計算兩個區域是否有交集 求不同等級S2塊包含的S2子塊

S2 Demo

Java實現Google的S2算法工具類GoogleS2GoogleS2GoogleS2-Java文檔類資源-CSDN下載

level (等級)min area(最小面積)max area(最大面積)average area(平均面積)units(單位)Random cell 1 (UK)() min edge length(隨機單元1 (UK)最小邊長度)Random cell 1 (UK) max edge length(隨機單元格1 (UK)最大邊長度)Random cell 2 (US) min edge length(隨機單元2 (US)最小邊長度)Random cell 2 (US) max edge length(隨機單元格2(美國)最大邊長度)Number of cells(單元格數)
085011012.1985011012.1985011012.19km27842 km7842 km7842 km7842 km6
121252753.0521252753.0521252753.05km23921 km5004 km3921 km5004 km24
24919708.236026521.165313188.26km21825 km2489 km1825 km2489 km96
31055377.481646455.51328297.07km2840 km1167 km1130 km1310 km384
4231564.06413918.15332074.27km2432 km609 km579 km636 km1536
553798.67104297.9183018.57km2210 km298 km287 km315 km6K
612948.8126113.320754.64km2108 km151 km143 km156 km24K
73175.446529.095188.66km254 km76 km72 km78 km98K
8786.21632.451297.17km227 km38 km36 km39 km393K
9195.59408.12324.29km214 km19 km18 km20 km1573K
1048.78102.0381.07km27 km9 km9 km10 km6M
1112.1825.5120.27km23 km5 km4 km5 km25M
123.046.385.07km21699 m2 km2 km2 km100M
130.761.591.27km2850 m1185 m1123 m1225 m402M
140.190.40.32km2425 m593 m562 m613 m1610M
1547520.399638.9379172.67m2212 m296 m281 m306 m6B
1611880.0824909.7319793.17m2106 m148 m140 m153 m25B
172970.026227.434948.29m253 m74 m70 m77 m103B
18742.51556.861237.07m227 m37 m35 m38 m412B
19185.63389.21309.27m213 m19 m18 m19 m1649B
2046.4197.377.32m27 m9 m9 m10 m7T
2111.624.3319.33m23 m5 m4 m5 m26T
222.96.084.83m2166 cm2 m2 m2 m105T
230.731.521.21m283 cm116 cm110 cm120 cm422T
240.180.380.3m241 cm58 cm55 cm60 cm1689T
25453.19950.23755.05cm221 cm29 cm27 cm30 cm7.00E+15
26113.3237.56188.76cm210 cm14 cm14 cm15 cm2.70E+16
2728.3259.3947.19cm25 cm7 cm7 cm7 cm1.08E+17
287.0814.8511.8cm22 cm4 cm3 cm4 cm4.32E+17
291.773.712.95cm212 mm18 mm17 mm18 mm1.73E+18
300.440.930.74cm26 mm9 mm8 mm9 mm7.00E+18
package com.zz.meridian.utils.googleS2;/*** @author tiger* GPS位置信息接下來說下坐標系。目前主要有三種地理坐標系,如下:* 1、WGS84坐標系:即地球坐標系(World Geodetic System),國際上通用的坐標系。* 設備包含的GPS芯片或者北斗芯片獲取的經緯度一般都是為WGS84地理坐標系,目前谷歌地圖采用的是WGS84坐標系(中國范圍除外)。* 2、GCJ02坐標系:即火星坐標系,國測局坐標系。是由中國國家測繪局制定。由WGS84坐標系經加密后的坐標系。谷歌中國和搜搜中國采用的GCJ02地理坐標系。* 3、BD09坐標系:百度坐標系,GCJ02坐標系經加密后的坐標系。* 4、其他(搜狗坐標系,圖吧坐標系等)。大概率也是再GCJ02坐標系基礎上加密生成的*/ public class PointS2Transform {public static double x_PI = 3.14159265358979324 * 3000.0 / 180.0;public static double PI = 3.1415926535897932384626;public static double a = 6378245.0;public static double ee = 0.00669342162296594323;/*** 百度坐標系 (BD-09) 與 火星坐標系 (GCJ-02)的轉換* 即 百度 轉 谷歌、高德** @param bd_lon* @param bd_lat* @returns {*[]}*/public static PointS2 bd09togcj02(double bd_lon, double bd_lat) {double x = bd_lon - 0.0065;double y = bd_lat - 0.006;double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);double gg_lng = z * Math.cos(theta);double gg_lat = z * Math.sin(theta);PointS2 point = new PointS2(gg_lat, gg_lng);return point;}/*** 火星坐標系 (GCJ-02) 與百度坐標系 (BD-09) 的轉換* 即谷歌、高德 轉 百度** @param lng* @param lat* @returns {*[]}*/public static PointS2 gcj02tobd09(double lng, double lat) {double z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);double theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);double bd_lng = z * Math.cos(theta) + 0.0065;double bd_lat = z * Math.sin(theta) + 0.006;PointS2 point = new PointS2(bd_lat, bd_lng);return point;};/*** WGS84轉GCj02** @param lng* @param lat* @returns {*[]}*/public static PointS2 wgs84togcj02(double lng, double lat) {double dlat = transformlat(lng - 105.0, lat - 35.0);double dlng = transformlng(lng - 105.0, lat - 35.0);double radlat = lat / 180.0 * PI;double magic = Math.sin(radlat);magic = 1 - ee * magic * magic;double sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);double mglat = lat + dlat;double mglng = lng + dlng;PointS2 point = new PointS2(mglat, mglng);return point;}/*** 84 to ?星坐標系 (GCJ-02) 是否離開了中國版** @param lat* @param lon*/public static PointS2 gps84_To_Gcj02(double lat, double lon) {if (outOfChina(lat, lon)) {return null;}double dLat = transformLat(lon - 105.0, lat - 35.0);double dLon = transformLon(lon - 105.0, lat - 35.0);double radLat = lat / 180.0 * PI;double magic = Math.sin(radLat);magic = 1 - ee * magic * magic;double sqrtMagic = Math.sqrt(magic);dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);double mgLat = lat + dLat;double mgLon = lon + dLon;return new PointS2(mgLat, mgLon);}/*** ?星坐標系 GCJ02 轉換為 WGS84** @param lng* @param lat* @returns {*[]}*/public static PointS2 gcj02towgs84(double lng, double lat) {double dlat = transformlat(lng - 105.0, lat - 35.0);double dlng = transformlng(lng - 105.0, lat - 35.0);double radlat = lat / 180.0 * PI;double magic = Math.sin(radlat);magic = 1 - ee * magic * magic;double sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);double mglat = lat + dlat;double mglng = lng + dlng;PointS2 point = new PointS2(mglat, mglng);return point;}/*** ?星坐標系 GCJ02 轉換為 WGS84 是否離開了中國版* @param lon * @param lat * @return*/public static PointS2 gcj_To_Gps84(double lat, double lon) {PointS2 gps = transform(lat, lon);double lontitude = lon * 2 - gps.getLng();double latitude = lat * 2 - gps.getLat();return new PointS2(latitude, lontitude);}/*** 將 GCJ-02 坐標轉換成 BD-09 坐標* @param gg_lat* @param gg_lon*/public static PointS2 gcj02_To_Bd09(double gg_lat, double gg_lon) {double x = gg_lon, y = gg_lat;double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * PI);double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * PI);double bd_lon = z * Math.cos(theta) + 0.0065;double bd_lat = z * Math.sin(theta) + 0.006;return new PointS2(bd_lat, bd_lon);}/*** 將 BD-09 坐標轉換成GCJ-02 坐標* bd_lat * @param bd_lon * @return*/public static PointS2 bd09_To_Gcj02(double bd_lat, double bd_lon) {double x = bd_lon - 0.0065;double y = bd_lat - 0.006;double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * PI);double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * PI);double gg_lon = z * Math.cos(theta);double gg_lat = z * Math.sin(theta);return new PointS2(gg_lat, gg_lon);}/*** (BD-09)-->84** @param bd_lat* @param bd_lon* @return*/public static PointS2 bd09_To_Gps84(double bd_lat, double bd_lon) {PointS2 gcj02 = bd09_To_Gcj02(bd_lat, bd_lon);PointS2 map84 = gcj_To_Gps84(gcj02.getLat(),gcj02.getLng());return map84;}/*** is or not outOfChina* 是否離開了中國* @param lat* @param lon* @return*/public static boolean outOfChina(double lat, double lon) {if (lon < 72.004 || lon > 137.8347)return true;if (lat < 0.8293 || lat > 55.8271)return true;return false;}private static double transformlat(double lng, double lat) {double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret;}private static double transformlng(double lng, double lat) {double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret;}public static PointS2 transform(double lat, double lon) {if (outOfChina(lat, lon)) {return new PointS2(lat, lon);}double dLat = transformLat(lon - 105.0, lat - 35.0);double dLon = transformLon(lon - 105.0, lat - 35.0);double radLat = lat / 180.0 * PI;double magic = Math.sin(radLat);magic = 1 - ee * magic * magic;double sqrtMagic = Math.sqrt(magic);dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);double mgLat = lat + dLat;double mgLon = lon + dLon;return new PointS2(mgLat, mgLon);}public static double transformLat(double x, double y) {double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y+ 0.2 * Math.sqrt(Math.abs(x));ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0;return ret;}public static double transformLon(double x, double y) {double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1* Math.sqrt(Math.abs(x));ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0* PI)) * 2.0 / 3.0;return ret;} }

package com.zz.meridian.utils.googleS2;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @NoArgsConstructor @AllArgsConstructor public class PointS2 {double lat;double lng; }

package com.zz.meridian.utils.googleS2;import com.google.common.collect.Lists; import com.google.common.geometry.*;import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors;/*** @author tiger* 必須使用-S2使用的是WGS84坐標* 如果你獲得的是WGS84坐標-百度或者高德的地理坐標,請將其轉換為GPS-WGS84坐標* 由于google s2默認使用gps坐標系,在國內無法使用,需要轉換為國內的gcj坐標或者bd09坐標* 主要包含3類方法:* getS2RegionByXXX* 獲取給定經緯度坐標對應的S2Region,該region可用于獲取cellId,或用于判斷包含關系* getCellIdList* 獲取給定region的cellId,并通過childrenCellId方法控制其嚴格遵守minLevel* contains* 對于指定S2Region,判斷經緯度或CellToken是否在其范圍內*/ /* 包<dependency><groupId>io.sgr</groupId><artifactId>s2-geometry-library-java</artifactId><version>1.0.0</version></dependency>*/ public class GoogleS2 {/*** 經緯度 轉 S2CellId** @param lat 維度* @param lng 經度* @param currentLevel level選擇級別*/public static S2CellId latLonToS2LatLng(double lat, double lng, int currentLevel) {S2LatLng s2LatLng = S2LatLng.fromDegrees(lat, lng);S2CellId cellId = S2CellId.fromLatLng(s2LatLng).parent(currentLevel);return cellId;}/*** 經緯度 轉 CellId** @param lat 維度* @param lng 經度* @param currentLevel level選擇級別*/public static Long latLonToCellId(double lat, double lng, int currentLevel) {S2LatLng s2LatLng = S2LatLng.fromDegrees(lat, lng);S2CellId cellId = S2CellId.fromLatLng(s2LatLng).parent(currentLevel);return cellId.id();}/*** 經緯度 轉 cellToken** @param lat 維度* @param lng 經度* @param currentLevel level選擇級別*/public static String latLonToCellToken(double lat, double lng, int currentLevel) {try {S2LatLng s2LatLng = S2LatLng.fromDegrees(lat, lng);S2CellId cellId = S2CellId.fromLatLng(s2LatLng).parent(currentLevel);return cellId.toToken();} catch (Exception e) {e.printStackTrace();return null;}}/*** CellId 轉 經緯度** @param cellId 是 S2CellId.id();* @return*/public static PointS2 cellIdToLatLon(Long cellId) {S2LatLng s2LatLng = new S2CellId(cellId).toLatLng();double lat = s2LatLng.latDegrees();double lng = s2LatLng.lngDegrees();return new PointS2(lat, lng);}/*** cellToken 轉 經緯度** @param cellToken* @return*/public static PointS2 cellTokenToLatLon(String cellToken) {S2LatLng latLng = new S2LatLng(S2CellId.fromToken(cellToken).toPoint());return new PointS2(latLng.latDegrees(), latLng.lngDegrees());}/*** 判斷region是否包含指定經緯度坐標** @param region* @param lat* @param lon* @return*/public static boolean contains(S2Region region, double lat, double lon) {S2LatLng s2LatLng = S2LatLng.fromDegrees(lat, lon);try {boolean contains = region.contains(new S2Cell(s2LatLng));return contains;} catch (NullPointerException e) {e.printStackTrace();return false;}}/*** 判斷當前cellId的level** @param cellId* @return*/public static int getLevel(long cellId) {int n = 0;while (cellId % 2 == 0) {cellId = cellId / 2;n++;}return 30 - n / 2;}/*** 獲取任意形狀內所有S2塊* 可以用于區域內目標檢索,根據cellid建立索引,查詢區域內cellid in (list)的區域** @param vertices 形成多邊形的點集合* @return*/private static List<Long> vertices(List<PointS2> vertices) {//因為x一般表示經度 y軸表示緯度所以這兒需要參數需要對應一下List<S2Point> collect = vertices.stream().map(e -> S2LatLng.fromDegrees(e.getLng(), e.getLat()).toPoint()).collect(Collectors.toList());S2Loop s2Loop = new S2Loop(collect);S2Polygon cap = new S2Polygon(s2Loop); //創建多邊形//S2Region cap 任意區域S2RegionCoverer coverer = new S2RegionCoverer();//最小格子和最大格子,總格子數量coverer.setMinLevel(7);//設置最小級別coverer.setMaxLevel(15);//設置最大級別coverer.setMaxCells(500);//設置最大CellList<S2CellId> list = coverer.getCovering(cap).cellIds(); // for (S2CellId s : list) { // System.out.println(s.id()); // }return list.stream().map(S2CellId::id).collect(Collectors.toList());}/*** S2計算距離** @param s1 點1的經度 緯度* @param s2 點2的經度 緯度* @return*/public static double distance(PointS2 s1, PointS2 s2) {S2LatLng startS2 = S2LatLng.fromDegrees(s1.getLat(), s1.getLng());S2LatLng endS2 = S2LatLng.fromDegrees(s2.getLat(), s2.getLng());double distance = startS2.getEarthDistance(endS2);return distance;}/*** 計算地球上某個點是否在矩形區域內* 矩形的左下角點和矩形的右上角點通過緯度來判斷,高低不然算不出來* @param s1 生成矩形的經緯度s1* @param s2 生成矩形的經緯度s2* @param s3 判斷s3點是否在上面s1和s2的矩形中* @return*/public static boolean pointRectangleArea(PointS2 s1, PointS2 s2, int desLevel, PointS2 s3) {S2LatLngRect rect = null;if (s1.getLat() > s2.getLat()) {//兩個點可以經緯度-構建S2矩形rect = new S2LatLngRect(S2LatLng.fromDegrees(s2.getLat(), s2.getLng()),S2LatLng.fromDegrees(s1.getLat(), s1.getLng()));} else {//兩個點可以經緯度-構建S2矩形rect = new S2LatLngRect(S2LatLng.fromDegrees(s1.getLat(), s1.getLng()),S2LatLng.fromDegrees(s2.getLat(), s2.getLng()));}//設置矩形的大小S2RegionCoverer coverer = new S2RegionCoverer();//設置cellcoverer.setMinLevel(7);coverer.setMaxLevel(15);coverer.setMaxCells(500);S2CellUnion covering = coverer.getCovering(rect);S2LatLng s2LatLng = S2LatLng.fromDegrees(s3.getLat(), s3.getLng());return covering.contains(s2LatLng.toPoint());}/*** 計算點s2是否在圓中心為s1半徑為capHeight的圓形區域內** @param s1* @param capHeight* @param s2* @return*/public static boolean pointGardenArea(PointS2 s1, double capHeight, PointS2 s2) {S2LatLng s2LatLng = S2LatLng.fromDegrees(s1.getLat(), s1.getLng());S2Cap cap = S2Cap.fromAxisHeight(s2LatLng.toPoint(), capHeight);S2LatLng s2LatLng2 = S2LatLng.fromDegrees(s2.getLat(), s2.getLng());boolean contains = cap.contains(s2LatLng2.toPoint());return contains;}/*** 判斷點是否在任意形狀內** @param vertices 形成多邊形的點集合* @param s 判斷的點* @return*/public static boolean pointPolygonArea(List<PointS2> vertices, PointS2 s) {//因為x一般表示經度 y軸表示緯度所以這兒需要參數需要對應一下List<S2Point> collect = vertices.stream().map(e -> S2LatLng.fromDegrees(e.getLng(), e.getLat()).toPoint()).collect(Collectors.toList());S2Loop s2Loop = new S2Loop(collect);S2Polygon polygon = new S2Polygon(s2Loop); //創建多邊形S2Point s2Point = S2LatLng.fromDegrees(s.getLat(), s.getLng()).toPoint();boolean contains = polygon.contains(s2Point);return contains;}/*** 計算兩個區域是否有交集** @param vertices 形成多邊形的點集合1* @param vertices2 形成多邊形的點集合2* @return*/public static boolean pointUniteArea(List<PointS2> vertices, List<PointS2> vertices2) {//因為x一般表示經度 y軸表示緯度所以這兒需要參數需要對應一下List<S2Point> collect = vertices.stream().map(e -> S2LatLng.fromDegrees(e.getLng(), e.getLat()).toPoint()).collect(Collectors.toList());//因為x一般表示經度 y軸表示緯度所以這兒需要參數需要對應一下List<S2Point> collect2 = vertices2.stream().map(e -> S2LatLng.fromDegrees(e.getLng(), e.getLat()).toPoint()).collect(Collectors.toList());S2Loop s2Loop = new S2Loop(collect);S2Polygon polygon = new S2Polygon(s2Loop);S2Loop s2Loop2 = new S2Loop(collect2);S2Polygon polygon2 = new S2Polygon(s2Loop2);S2RegionCoverer coverer = new S2RegionCoverer();//設置cellcoverer.setMinLevel(7);//設置最小級別coverer.setMaxLevel(15);//設置最大級別coverer.setMaxCells(500);//設置最大CellS2CellUnion covering = coverer.getCovering(polygon2);for (S2CellId s2CellId : covering.cellIds()) {boolean b = polygon.mayIntersect(new S2Cell(s2CellId));if (b) {System.out.println("兩個區域之間含有交集.....");}return b;}return false;}/*** 不同等級S2塊包含的S2子塊** @param s 自己的點* @param level 自己的等級* @param desLevel 被計算的格子等級,注意:等級越大算的就越多* @return*/public static List<S2CellId> childrenCellId(PointS2 s, Integer level, Integer desLevel) {S2LatLng s2LatLng = S2LatLng.fromDegrees(s.getLat(), s.getLng());S2CellId cellId = S2CellId.fromLatLng(s2LatLng).parent(level);return childrenCellId(cellId, cellId.level(), desLevel);}//遞歸調用,每個格子一分為四private static List<S2CellId> childrenCellId(S2CellId s2CellId, Integer curLevel, Integer desLevel) {if (curLevel < desLevel) {//計算當前格子每個格子的差值long interval = (s2CellId.childEnd().id() - s2CellId.childBegin().id()) / 4;List<S2CellId> s2CellIds = Lists.newArrayList();for (int i = 0; i < 4; i++) {long id = s2CellId.childBegin().id() + interval * i;s2CellIds.addAll(childrenCellId(new S2CellId(id), curLevel + 1, desLevel));}return s2CellIds;} else {return Lists.newArrayList(s2CellId);}}/*** 任意形狀內所有指定等級的S2塊** @param vertices 多邊形的點* @param desevel 需要計算的內部的s2塊的等級* @return*/public static List<S2CellId> childrenCellId(List<PointS2> vertices, int desevel) {List<S2Point> collect = vertices.stream().map(e -> S2LatLng.fromDegrees(e.getLng(), e.getLat()).toPoint()).collect(Collectors.toList());S2Loop s2Loop = new S2Loop(collect);S2Polygon polygon = new S2Polygon(s2Loop);S2RegionCoverer coverer = new S2RegionCoverer();//設置cellcoverer.setMinLevel(6);//設置最小級別 108km~151kmcoverer.setMaxLevel(11);//設置最大級別 3km~5kmcoverer.setMaxCells(500);//設置最大CellS2CellUnion covering = coverer.getCovering(polygon);List<S2CellId> s2CellIds = covering.cellIds();int i=0;List<S2CellId> list=new ArrayList<>();for (S2CellId s2CellId : s2CellIds) {List<S2CellId> s2CellIds1 = childrenCellId(s2CellId, s2CellId.level(), desevel);list.addAll(s2CellIds1);}return list;}public static void main(String[] args) {double lat = 30.2;double lng = 116.3;int currentLevel = 13;S2LatLng s2LatLng = S2LatLng.fromDegrees(lat, lng);S2CellId cellId = S2CellId.fromLatLng(s2LatLng).parent(currentLevel);System.err.println(cellId);String s = cellId.toToken();System.err.println(s);/* System.err.println("------------------------------");System.err.println(latLonToCellToken(lat,lng,1));System.err.println(latLonToCellToken(lat,lng,2));System.err.println(latLonToCellToken(lat,lng,3));System.err.println(latLonToCellToken(lat,lng,4));System.err.println(latLonToCellToken(lat,lng,5));System.err.println(latLonToCellToken(lat,lng,6));System.err.println(latLonToCellToken(lat,lng,7));System.err.println(latLonToCellToken(lat,lng,8));System.err.println(latLonToCellToken(lat,lng,9));System.err.println(latLonToCellToken(lat,lng,10));System.err.println(latLonToCellToken(lat,lng,11));System.err.println(latLonToCellToken(lat,lng,12));System.err.println(latLonToCellToken(lat,lng,13));System.err.println(latLonToCellToken(lat,lng,14));System.err.println(latLonToCellToken(lat,lng,15));System.err.println(latLonToCellToken(lat,lng,16));System.err.println(latLonToCellToken(lat,lng,17));System.err.println(latLonToCellToken(lat,lng,18));System.err.println(latLonToCellToken(lat,lng,19));System.err.println(latLonToCellToken(lat,lng,20));System.err.println(latLonToCellToken(lat,lng,21));System.err.println(latLonToCellToken(lat,lng,30));System.err.println("------------------------------");*/PointS2 pointS2 = cellIdToLatLon(cellId.id());System.err.println(pointS2);double distance = distance(new PointS2(55.8241, 137.8347), new PointS2(55.8271, 137.8347));System.err.println("距離為:" + distance + " m");boolean b = pointRectangleArea(new PointS2(41.808006669390046, 111.495546258779), new PointS2(47.55467105799515, 117.6168335999181),30, new PointS2(45.47161041105891, 114.84087253252726));System.err.println("矩形-----------------" + b);boolean b2 = pointGardenArea(new PointS2(112.030500, 27.970271), 600.5, new PointS2(22.629164, 114.025514));System.err.println(b2);ArrayList<PointS2> pointS2s = new ArrayList<>();pointS2s.add(new PointS2(41.200195, 97.760681));pointS2s.add(new PointS2(41.827161, 103.119335));pointS2s.add(new PointS2(36.507585, 103.688463));pointS2s.add(new PointS2(35.895869, 98.743842));pointS2s.add(new PointS2(41.253179, 97.700277));boolean b1 = pointPolygonArea(pointS2s, new PointS2(39.470948, 100.302180));System.err.println("多邊形-----------" + b1);System.err.println("多邊形2-----------" + Ryamethod.ray2(39.470948f, 100.302180f, pointS2s));// boolean b3 = pointUniteArea(pointS2s, pointS2s);ArrayList<PointS2> pointS2s1 = Lists.newArrayList(new PointS2(1, 2), new PointS2(3, 4));boolean b3 = pointUniteArea(pointS2s, pointS2s1);System.err.println(b3);// List<S2CellId> s2CellIds1 = childrenCellId(new PointS2(39.470948, 100.302180), 10, 12); // for (S2CellId s2CellId : s2CellIds1) { // System.err.println("點下的s2的token------"+s2CellId.toToken()); // }List<S2CellId> s2CellIds = childrenCellId(pointS2s, 10); // for (S2CellId s2CellId : s2CellIds) { // System.err.println("token------"+s2CellId.toToken()); // }}}

總結

以上是生活随笔為你收集整理的Java实现Google的S2算法工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91精品久久久久久久91蜜桃 | 国产天天爽 | www.黄色 | 国产字幕在线观看 | 81精品国产乱码久久久久久 | 8x8x在线观看视频 | 日本高清xxxx | 丁香激情综合久久伊人久久 | 欧美二区三区91 | 国产成人精品一区在线 | 欧美日韩国产区 | 婷婷日日| 欧美日韩一区二区三区免费视频 | 亚洲黄色在线免费观看 | 成人精品视频久久久久 | 成人在线中文字幕 | 日韩免费精品 | 免费在线成人av电影 | 黄色app网站在线观看 | 久久精品影片 | 日韩免费观看视频 | 在线观看黄色国产 | 国产精品专区在线观看 | 久久精品国产一区二区 | 天天干天天弄 | 日韩在线免费看 | 久久国产精品久久精品 | 一级精品视频在线观看宜春院 | 丁香六月伊人 | 国产成人不卡 | 特级毛片aaa | 欧美人操人 | 久久国产亚洲视频 | www.婷婷色 | 九九热视频在线播放 | av中文字幕在线看 | 欧美日韩中文在线视频 | 欧美日韩在线观看一区二区三区 | 日本大尺码专区mv | 日韩区欧美久久久无人区 | a色网站 | 免费在线观看一区 | 亚洲精品tv | 九色91av | 天天爽夜夜爽人人爽曰av | 不卡av电影在线 | 97av影院| 精品综合久久 | 美女视频a美女大全免费下载蜜臀 | 丁香六月婷婷开心婷婷网 | 亚洲在线精品 | 日本久久综合网 | 视频 天天草 | 欧洲成人av | 九九热在线精品视频 | 国产在线毛片 | 高清有码中文字幕 | 爱爱av网 | 激情网综合 | 日韩精品免费在线观看 | 日韩高清精品一区二区 | 97视频播放 | 成人av在线影视 | 成年人av在线播放 | 国产在线精品一区 | 人人澡人人澡人人 | 亚洲精品视频在 | 欧美 日韩 国产 中文字幕 | 国产精品久久一区二区三区不卡 | 色噜噜狠狠狠狠色综合久不 | 日韩精品一区二区三区三炮视频 | 国产一区二区中文字幕 | 中文字幕在线观看完整版 | 丁香色综合 | 色综合天天天天做夜夜夜夜做 | 日韩在线免费视频 | 国产69精品久久久久久久久久 | a久久免费视频 | 天天操天天舔天天爽 | 国产精品久久久久久久久毛片 | 亚洲午夜大片 | 韩日电影在线观看 | 成人免费视频播放 | 手机看片久久 | 久久免费观看少妇a级毛片 久久久久成人免费 | 麻豆视频国产在线观看 | 久久国内精品99久久6app | 中文字幕一区二区三区在线播放 | www五月天| 日韩精品2区 | 婷婷色五 | 免费中文字幕在线观看 | 久久视频网 | 久久精品久久精品久久 | 99色网站 | www.午夜视频 | 奇米四色影狠狠爱7777 | 欧美一级黄色视屏 | 最近免费观看的电影完整版 | 国产裸体视频bbbbb | 综合婷婷丁香 | av看片在线观看 | 欧美日韩三级在线观看 | 日本在线h| 日本高清免费中文字幕 | 在线观看网站黄 | 91久久丝袜国产露脸动漫 | 黄色不卡av | 草久久久| 91成人小视频 | 中文字幕av免费在线观看 | 久久爽久久爽久久av东京爽 | 黄色在线观看网站 | 91亚洲精品乱码久久久久久蜜桃 | 日韩二区三区在线 | 中文字幕综合在线 | 五月婷婷综合在线视频 | 国产精品久久久久久久久久ktv | 成人av播放 | 欧美日韩中文国产 | 日本久久免费电影 | 色综合久久久久综合99 | 在线观看免费av片 | 99热精品在线观看 | 欧美一二三专区 | 久久精品第一页 | 懂色av一区二区在线播放 | 99色在线观看视频 | 美女网站视频免费都是黄 | 国产高清在线看 | 中文字幕av免费观看 | 久久婷婷一区 | 国产精品美女在线观看 | 一级精品视频在线观看宜春院 | 九色自拍视频 | 97超碰精品| 成人欧美亚洲 | 国产精品久久久久一区二区三区共 | 日韩欧美高清不卡 | 色网站中文字幕 | 2021国产精品 | 天堂av在线 | 麻豆极品 | aaaaaa毛片 | 日韩在线精品一区 | 2024国产在线 | 天天插天天色 | 在线午夜av | 国产精品video爽爽爽爽 | 97在线观看免费高清完整版在线观看 | 精品在线不卡 | 成人国产精品免费 | 久久免费视频国产 | 亚洲激情校园春色 | 久久精品国产亚洲精品 | 色噜噜色噜噜 | 久久久久久久久福利 | 9999精品免费视频 | 亚洲精品久久久久久久不卡四虎 | 日韩电影中文字幕在线观看 | 日韩一级片网址 | 国产黄色大片 | 五月天久久久久久 | 午夜精品电影 | 九九热av | 色五丁香 | 青青久草在线视频 | 色婷婷综合久久久久中文字幕1 | 久久综合五月婷婷 | 欧美男同网站 | 激情电影影院 | 日韩字幕在线观看 | 欧产日产国产69 | 俺要去色综合狠狠 | 一区二区三区在线影院 | 27xxoo无遮挡动态视频 | 成人h在线播放 | 亚洲 欧美 另类人妖 | 色婷婷一| 国产免费一区二区三区最新 | 日本中文字幕观看 | 久久久久国产免费免费 | 久久久国产精品电影 | 日本在线观看一区二区 | 久久久久中文字幕 | 91 中文字幕 | 天天爽夜夜爽人人爽一区二区 | 成人午夜精品 | 欧美一级在线看 | 亚洲精品小视频 | 91av片| 亚洲精品一区二区三区四区高清 | 激情伊人五月天久久综合 | 日韩久久精品 | 97碰碰视频 | 亚洲综合在线五月天 | 亚洲黄色在线观看 | 一区二区电影在线观看 | 国产一级一片免费播放放 | 日韩理论片在线观看 | 三级av片 | 欧美在线视频a | 五月天天天操 | 国产精品福利久久久 | 日日夜夜av | 国产精品美女久久久久久久久久久 | 天天舔天天射天天操 | 久久精品欧美日韩精品 | 久久a久久 | 99999精品视频| 一区免费视频 | 99久久精品国产免费看不卡 | 精品亚洲va在线va天堂资源站 | 国产伦精品一区二区三区免费 | 精品久久一区二区三区 | 97电影网站 | 99国产在线观看 | 成人国产电影在线观看 | 黄污在线观看 | 亚洲成人精品 | 欧美性生活小视频 | 免费精品在线视频 | 国产精品2区 | 中文字幕免费观看 | 久久中文字幕视频 | 午夜精品视频福利 | 亚洲国产午夜 | 成人香蕉视频 | 中文字幕精品三区 | 青青色影院 | 人人草网站 | 日日干,天天干 | 欧美成人黄色片 | 亚洲精品ww | 一二三区av | 久久手机视频 | 在线免费观看黄色av | 国产剧情一区在线 | 最近中文字幕免费 | 91丝袜美腿| 久久国产精品久久w女人spa | 黄色三级在线看 | 日韩欧美视频一区 | 麻豆传媒在线视频 | 亚洲日韩中文字幕 | 天天摸天天干天天操天天射 | 亚洲精品在线观 | 最新av在线播放 | 中文字幕在线播放第一页 | 成人毛片久久 | 五月婷婷中文网 | 国际精品久久 | 亚洲不卡在线 | 色综合天天做天天爱 | 国产无套精品久久久久久 | 日日婷婷夜日日天干 | 国产精品自在线 | 黄色毛片视频 | 亚洲在线观看av | 成人黄色大片在线免费观看 | 欧美另类性| 日韩精品免费在线视频 | 久久人人精品 | 国产在线自 | 99视频精品免费观看, | 亚洲va韩国va欧美va精四季 | 中文字幕免费 | 亚州av免费| 国产精品99在线观看 | 国偷自产中文字幕亚洲手机在线 | 久久五月精品 | 久久综合导航 | 亚洲专区欧美 | 91传媒在线播放 | 欧美a级免费视频 | 免费看91的网站 | 99综合久久| 久久精品视频在线观看 | 亚洲精品在线观看不卡 | 99精品免费观看 | 天天操天天射天天爱 | 国产日韩视频在线观看 | 久久理论影院 | 99精品久久久久久久 | 亚洲精欧美一区二区精品 | 久久精品日产第一区二区三区乱码 | 97品白浆高清久久久久久 | 国产一区久久 | 欧美精品首页 | 午夜av激情 | 亚洲六月丁香色婷婷综合久久 | 亚洲国产激情 | 国产黄色观看 | 国产亚洲日 | 在线免费观看羞羞视频 | 成 人 黄 色 免费播放 | 国产日韩欧美综合在线 | 精品99在线 | 亚洲综合色丁香婷婷六月图片 | 欧美黑人猛交 | 中文字幕在线看视频国产 | 日韩精品免费在线视频 | 成人黄大片 | 日本性视频 | 九九免费精品视频在线观看 | 操高跟美女 | 亚洲激情| 色在线网 | 国产精品视频 | 亚洲高清网站 | 久在线 | 欧美综合久久久 | 亚洲第一av在线播放 | av中文字幕网站 | 日本精品久久久久久 | 免费观看9x视频网站在线观看 | 日日夜夜精品视频天天综合网 | 在线视频麻豆 | 亚洲精品永久免费视频 | 激情视频久久 | 亚洲国产影院 | 久久久在线 | 国产伦理一区二区 | 国产中文在线视频 | 欧美亚洲专区 | 午夜在线日韩 | 成人香蕉视频 | 黄色日视频 | 黄色午夜 | 69亚洲精品 | 久久男人免费视频 | 六月丁香激情综合色啪小说 | 一区二区精品视频 | 六月丁香在线观看 | 激情在线免费视频 | 99久久久久免费精品国产 | 黄色av免费在线 | 99久久精品免费看国产免费软件 | 在线播放第一页 | 国产情侣一区 | 97超碰免费在线观看 | 色狠狠久久av五月综合 | 日韩精品一区二区三区高清免费 | 丝袜少妇在线 | 日韩大片在线免费观看 | 久久久综合 | 69精品视频在线观看 | 99视频久久 | 免费观看一区二区三区视频 | 伊人伊成久久人综合网站 | 亚洲精品视频久久 | av观看在线观看 | 丁香花在线观看视频在线 | 亚洲黄色在线观看 | 婷婷丁香七月 | 欧美91成人网 | 91大神精品视频 | 国产午夜视频在线观看 | 亚洲 欧美 国产 va在线影院 | 黄网站app在线观看免费视频 | 激情综合啪啪 | 久久伊人操 | 97超碰人人模人人人爽人人爱 | 久艹视频免费观看 | 亚洲精品视频中文字幕 | 天天色视频 | 日韩网| av一区二区在线观看中文字幕 | 91麻豆操| 九九九在线 | 久久在线精品视频 | 亚洲国产日韩一区 | 精品一区精品二区高清 | 亚洲少妇久久 | 日韩一区二区免费视频 | 成人黄视频 | av片子在线观看 | 天天干天天综合 | 日韩综合色 | 国产精品国产亚洲精品看不卡15 | 免费视频成人 | 成年人免费在线看 | 成 人 a v天堂 | 日韩有色 | 久久久国产一区二区 | 日韩精品你懂的 | 中文字幕在线观看第一页 | 精品免费一区 | 国产成人精品午夜在线播放 | 中文字幕亚洲在线观看 | 中文av一区二区 | 91麻豆精品一区二区三区 | 亚洲黄色片在线 | 午夜av免费看 | 午夜精品久久久久久 | 国产精品美女视频 | 在线观看的黄色 | 国产手机在线观看 | 日韩在线观看a | 在线免费av网 | 久久99久久99精品免费看小说 | 天堂网av在线| 狠狠的日| 最近能播放的中文字幕 | 久久精品综合 | 91亚色免费视频 | 一级黄色毛片 | 9在线观看免费 | 中文字幕亚洲字幕 | 美女视频黄在线 | 天天艹天天干天天 | 五月婷婷毛片 | 久久9视频 | 天天操夜夜操 | 天天操天天爱天天爽 | 毛片网站观看 | 丁香婷五月 | 成人av一区二区兰花在线播放 | av在线精品| 亚洲成年片 | 在线观看免费一级片 | 天天干天天摸 | 欧美成人日韩 | 免费在线观看黄色网 | 天天干天天操天天爱 | av无限看| 91视频91蝌蚪 | 久草视频在线观 | 亚洲高清久久久 | www.超碰 | 精品久久一 | 丁香六月激情婷婷 | 亚州性色 | 久久久久女教师免费一区 | 91麻豆精品久久久久久 | 97超碰中文字幕 | 91视频免费看网站 | 91香蕉视频黄 | 97香蕉久久国产在线观看 | 国产中文字幕国产 | 毛片永久新网址首页 | 五月花激情 | 精品亚洲成人 | 欧美精品被 | 国产精品免费观看视频 | 国产96在线 | 免费三级黄色片 | www一起操 | 激情综合色综合久久综合 | 国产精品乱码久久 | 国产成人福利在线观看 | 亚洲日韩中文字幕在线播放 | 国产亚洲精品美女久久 | 人人草在线视频 | 国产高清绿奴videos | 久久午夜影视 | 免费av小说 | 在线观看中文字幕一区二区 | 中文字幕精品三区 | 91丨九色丨首页 | 九九九热| 9999激情| 亚洲精品在线免费看 | 久久黄网站 | 91av国产视频 | 国产精品九九久久久久久久 | 在线中文字幕网站 | avwww在线观看 | 国产区精品视频 | 欧美激情第十页 | 国产精品麻豆99久久久久久 | 香蕉视频日本 | 欧美亚洲三级 | 精品在线视频一区二区三区 | 天天看天天操 | 四虎国产精品永久在线国在线 | 久久国产区 | 欧美日韩69 | a特级毛片 | 毛片网在线 | 国产视频欧美视频 | 免费视频网 | 日韩伦理一区二区三区av在线 | 国产成人精品一区二区三区福利 | 亚洲国产精品人久久电影 | 国产一区欧美在线 | 日韩有码在线观看视频 | 欧美成人h版电影 | 男女啪啪免费网站 | 精品九九九 | 久久精品这里都是精品 | 天天射天天操天天干 | 波多野结衣视频在线 | 最新国产在线观看 | 久久精品中文字幕 | 国产精品黄色影片导航在线观看 | 亚洲激情一区二区三区 | 美女在线观看av | 成人中心免费视频 | 免费一级毛毛片 | 亚洲欧美日韩一区二区三区在线观看 | 亚洲影视九九影院在线观看 | 日韩精品一区二区三区在线视频 | 国产又粗又长又硬免费视频 | 久久综合亚洲鲁鲁五月久久 | 97视频人人免费看 | 91视频中文字幕 | 在线成人高清电影 | 天天天天综合 | 国产一级免费在线观看 | 夜色成人网 | 丁香婷婷综合五月 | 免费看污黄网站 | 国产一及片 | 国产精品永久久久久久久久久 | 在线性视频日韩欧美 | 性色视频在线 | 中文字幕丰满人伦在线 | 国产精品网在线观看 | 欧美日韩一级视频 | 日本不卡一区二区三区在线观看 | 国产一区二区中文字幕 | 激情丁香在线 | 人人插人人 | 国产精品久久久久国产精品日日 | 国产精品6999成人免费视频 | 免费看片网页 | 美女网站黄在线观看 | 久久亚洲成人网 | 亚洲国产精品va在线 | 日韩久久精品一区二区 | 91九色网址 | 国产精品日韩 | 色94色欧美 | 国产一区二区在线免费 | 亚洲人片在线观看 | 亚洲精品国产精品99久久 | 美女久久久久 | 精品久久久久久国产偷窥 | 成人av电影免费观看 | 日韩欧美国产激情在线播放 | 色偷偷男人的天堂av | 亚洲国产欧美在线看片xxoo | 久草在线资源网 | 国产精品资源在线 | 精品伊人久久久 | 国产最顶级的黄色片在线免费观看 | 精品亚洲在线 | 精品久久五月天 | 免费看国产黄色 | 成人网看片| 日韩一区二区免费播放 | 婷婷综合 | 99国产精品视频免费观看一公开 | 黄色小网站在线 | 精品不卡视频 | 中文字幕在线看视频国产中文版 | 久久久综合色 | 人人讲| 天天看天天操 | 香蕉免费| 国产精品一区免费看8c0m | 91精品国产麻豆国产自产影视 | 亚洲精品短视频 | 国产精品麻豆视频 | 欧美午夜久久久 | 欧美成人日韩 | 精品国内| 国产 视频 高清 免费 | 日韩高清黄色 | 亚洲综合欧美日韩狠狠色 | 亚洲成人av片在线观看 | 久久99在线观看 | 日韩黄色一级电影 | 999久久久免费精品国产 | 亚洲国产成人精品在线观看 | 4p变态网欧美系列 | 精品91久久久久 | 一区二区三区在线免费播放 | 99视频导航 | 国内少妇自拍视频一区 | 国产精品成人自产拍在线观看 | 日韩有码在线播放 | 中文一二区 | 美女视频a美女大全免费下载蜜臀 | 国产97碰免费视频 | 日日夜操 | av黄色av| 成人资源站 | 欧美日比视频 | 九九涩涩av台湾日本热热 | 天天色天天综合网 | 国产成人精品一区二区三区在线 | 一区二区三区免费在线观看 | 中文字幕欧美日韩va免费视频 | 成人午夜片av在线看 | 在线观看 亚洲 | 日韩在线欧美在线 | 欧美一区二区三区免费看 | 国产手机免费视频 | a黄色影院 | 午夜在线观看影院 | 欧美激情第八页 | 国产精品一区二区久久久久 | 国产高清成人av | 五月婷婷播播 | 免费网站在线观看人 | 国产一区二区不卡在线 | 天天草天天插 | 国产精成人品免费观看 | 在线观看中文字幕亚洲 | 992tv在线观看 | 天天射天天干天天 | 一本—道久久a久久精品蜜桃 | 深夜免费福利视频 | 西西4444www大胆无视频 | 黄av资源 | 奇米7777狠狠狠琪琪视频 | 亚洲人人av | 日韩在线 | 久久综合99 | 国产精品久久久久久一二三四五 | 香蕉网在线观看 | 国产日韩欧美在线一区 | 国产精品精 | 久久99精品久久久久蜜臀 | 欧美日韩在线免费视频 | 亚洲一区日韩精品 | 最近免费在线观看 | 香蕉一区 | 国产一级免费片 | 亚洲精品在线观看中文字幕 | 日韩免费在线观看视频 | 在线网站黄| 久久97久久| 人人dvd| 国产精品高清一区二区三区 | 久久综合久久伊人 | 婷婷久操| 99久久夜色精品国产亚洲 | 久久av网| 国产色视频 | 91精品电影| 天天操夜夜曰 | 久久天天综合网 | 成人国产一区二区 | 高潮久久久久久久久 | 激情综合网五月激情 | 欧美aaa视频 | .精品久久久麻豆国产精品 亚洲va欧美 | 99热这里只有精品在线观看 | 视频一区在线播放 | 亚洲综合色婷婷 | 黄污网 | 人人爱天天操 | 精品国产伦一区二区三区观看体验 | 亚洲午夜精品一区二区三区电影院 | 国产精品资源 | 国产激情免费 | 尤物九九久久国产精品的分类 | 久久久一本精品99久久精品 | 97在线视频免费 | 成人sm另类专区 | 久久激情婷婷 | 久草在线播放视频 | 高潮久久久 | 插综合网| 国产999精品久久久久久 | 黄色在线看网站 | 免费激情在线电影 | 日日夜夜综合网 | 69欧美视频| 亚洲午夜久久久影院 | 国产精品精 | 久久精品一二三区白丝高潮 | 亚洲91精品在线观看 | 久久欧美综合 | 日日弄天天弄美女bbbb | 在线看片中文字幕 | 探花在线观看 | 91av在线精品| 国产夫妻性生活自拍 | 免费看黄色大全 | 伊人色播 | 黄色免费视频在线观看 | 精品国产一区二区三区久久久蜜臀 | 亚洲国产精品va在线 | 成人在线视频免费 | 日韩手机在线 | 国内综合精品午夜久久资源 | 亚洲精品久久久久久中文传媒 | 国产精品视频 | 黄色.com| 国产黄在线免费观看 | 国内精品视频免费 | 日本天天色 | 国产精品普通话 | 蜜臀av夜夜澡人人爽人人桃色 | 一区二区精品在线 | 五月婷婷综合色拍 | 国产黑丝一区二区三区 | 亚洲人成精品久久久久 | www.五月天婷婷 | 欧美三级高清 | 美女网站色免费 | 久久久久久毛片 | 精品国产乱码久久久久 | 免费久久精品视频 | 亚洲片在线资源 | 在线va视频 | 成人午夜电影网站 | 久久精品中文字幕一区二区三区 | zzijzzij日本成熟少妇 | 久久精品一区二区三区中文字幕 | 一区二区三区韩国免费中文网站 | 一区二区中文字幕在线 | 日本精品视频在线观看 | 黄色www在线观看 | 激情中文在线 | av电影一区二区三区 | www激情com| 国产一二三区在线观看 | 国产高清久久 | 日本精品久久久久 | 色婷婷综合久色 | 久草在线一免费新视频 | 成人久久影院 | 中文字幕一区二区三区久久 | 999成人国产 | 99视频黄 | 国产精品中文字幕在线观看 | 91在线国产观看 | 又黄又刺激又爽的视频 | 国产免费黄视频在线观看 | 国产精品久久99综合免费观看尤物 | 黄色国产区 | 色综合久久久网 | 激情综合网婷婷 | 欧美激情综合网 | 久久久久久久久久久网站 | 91网站在线视频 | 久久99国产精品免费网站 | 97操碰| 超碰人在线 | 欧美精彩视频在线观看 | 亚洲欧美久久 | 日韩欧美一区二区不卡 | 国产一卡久久电影永久 | 亚洲国产中文字幕在线观看 | 国产成人免费精品 | 亚洲国产小视频在线观看 | 国产精品久久婷婷六月丁香 | 色噜噜色噜噜 | 国产伦精品一区二区三区无广告 | 亚洲精品久久久久久久不卡四虎 | 久久精品久久久久电影 | 中文字幕免费观看 | 在线观看免费中文字幕 | 国产免费区 | 欧美狠狠操 | 免费看的国产视频网站 | 免费观看一区二区 | 在线中文字幕网站 | 综合天堂av久久久久久久 | 91超碰在线播放 | 天天干天天做 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 欧美人交a欧美精品 | 国产 欧美 日产久久 | 成年人视频在线免费播放 | 免费看的视频 | 成人在线视频观看 | 91av亚洲| 国产色婷婷精品综合在线手机播放 | 欧美人牲 | 500部大龄熟乱视频使用方法 | 国产亚洲片 | 五月天色中色 | 日韩综合一区二区三区 | 色在线视频网 | www91在线 | 四虎在线观看精品视频 | 日韩精品你懂的 | 99麻豆视频 | 九九视频在线 | 国产精品乱码一区二三区 | 91在线免费观看国产 | 三级视频日韩 | 五月天婷亚洲天综合网鲁鲁鲁 | 中文字幕乱码亚洲精品一区 | 欧美日韩一区二区在线观看 | 国产一级一级国产 | 韩国一区二区av | 成年人免费在线 | 日韩动态视频 | 在线有码中文字幕 | 最近高清中文在线字幕在线观看 | 丁香婷婷激情国产高清秒播 | 精品国产一区二区三区久久久 | 特级西西444www大胆高清无视频 | 国产精品久久一卡二卡 | 人人澡人人添人人爽一区二区 | 亚洲午夜精品久久久久久久久久久久 | 免费看十八岁美女 | www.夜色321.com| 亚洲va欧洲va国产va不卡 | 在线观看欧美成人 | 婷婷色亚洲| 精品福利视频在线观看 | 久久黄色精品视频 | bayu135国产精品视频 | 免费黄色在线播放 | 欧美午夜a| 夜夜操狠狠干 | 天天操天天插 | 婷婷av综合 | 亚洲精色 | 日本在线观看一区 | 亚洲最大免费成人网 | 亚洲国产日韩在线 | 久久www免费人成看片高清 | 久久久国产精品一区二区三区 | 国产精品久久久久高潮 | 九九视频免费 | 97人人添人澡人人爽超碰动图 | 亚洲精品视频在线免费 | 99精品国产成人一区二区 | 国产在线播放观看 | 国产精品成久久久久三级 | 国内精品久久天天躁人人爽 | 国产成人一区二区精品非洲 | 欧美日韩大片在线观看 | 国产精品美女免费视频 | 欧美一级视频一区 | 国外成人在线视频网站 | 国产免费一区二区三区网站免费 | 亚洲日本在线一区 | 国产大尺度视频 | 欧美日韩国产二区 | 青青草华人在线视频 | 欧美精品久久久久久久久老牛影院 | 天天艹天天干天天 | 99国产精品一区二区 | 欧美在线视频一区二区三区 | 久久高清片 | 欧美精品在线观看免费 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 久草在线免费资源 | 视频在线99re| 欧美亚洲国产日韩 | 中文视频在线播放 | 91视频在线免费下载 | 亚洲激情国产精品 | 国产精品亚洲片夜色在线 | 91久久精品一区二区二区 | 午夜91在线| 天天色天天射综合网 | av永久网址| 亚洲精品在线免费 | 欧美日韩精品在线观看视频 | 一区二区三区在线视频111 | 国产精品婷婷 | 在线观看你懂的网址 | 久av电影| 99久久精品国产欧美主题曲 | 日本一区二区三区免费看 | 五月婷婷开心中文字幕 | 永久免费毛片 | 99精品久久99久久久久 | 中文字幕亚洲综合久久五月天色无吗'' | 五月婷婷中文 | 97网| 亚洲日本色 | 激情五月亚洲 | 国精产品999国精产品视频 | 欧美成人91 | 亚洲成aⅴ人片久久青草影院 | 五月花丁香婷婷 | 色婷婷88av视频一二三区 | 精品亚洲在线 | 人人草在线观看 | 国产青青青 | 国产 在线观看 | 国产麻豆电影 | 日韩精品免费在线 | 欧美一区二区三区不卡 | 69av免费视频 | 午夜黄色影院 | 69国产精品成人在线播放 | 丁香5月婷婷 | 亚洲精品国产精品乱码不99热 | 在线观看一区二区视频 | 国产色一区 | 欧美极品xxxxx | 国产精品二区三区 | 亚洲精品tv久久久久久久久久 | 国产精品成久久久久 | 欧美婷婷色 | 国产乱对白刺激视频不卡 | 国产在线播放一区 | 日韩黄色免费电影 | 中文字幕一区二区三区在线播放 | 久久综合狠狠综合久久综合88 | 中文字幕av电影下载 | 在线视频久 | 精品在线一区二区三区 | 日韩成人在线免费观看 | 久久久久国产一区二区三区四区 | 亚洲国产精品999 | 日本中文字幕网站 | 在线免费视频你懂的 | 欧美成人日韩 | 天天干夜夜爱 | 五月综合久久 | 婷婷亚洲综合五月天小说 | 日韩av中文字幕在线免费观看 | 久久中文欧美 | av官网在线 | 三级黄色在线观看 | 国产一区二区不卡在线 | 国产精品theporn | 色婷婷狠狠 | 永久免费毛片 | 黄色中文字幕在线 | 国产精品久久麻豆 | 成人在线播放视频 | 国产精品麻豆一区二区三区 | 狠狠狠色丁香综合久久天下网 | 亚洲 中文 在线 精品 | 综合在线观看色 | 99免费看片| 天天色综合久久 | 天天人人 | 99自拍视频在线观看 | 国产91精品一区二区麻豆网站 | 西西4444www大胆视频 | 韩国精品视频在线观看 | 免费在线观看中文字幕 | av短片在线 | 六月色婷婷 | 亚洲精品99 | 一区二区精品视频 | 国产精品免费不 | 久久成人高清 | 狠狠操夜夜操 | 91av蜜桃| 午夜精品久久一牛影视 | 又爽又黄在线观看 | 毛片基地黄久久久久久天堂 | 91精品国产高清自在线观看 | 黄色91在线| 91最新在线观看 | 日韩xxxx视频 | 日本字幕网 | 国产日韩精品久久 | 伊人导航 | 97在线观 | 毛片一级免费一级 | 国产精品一区二区久久久 | 亚洲另类久久 | 精品视频国产 | 91久久久国产精品 | 午夜美女福利 | 亚洲精品国产电影 | 精品视频9999 | 91久久国产综合精品女同国语 | 国产成本人视频在线观看 | 五月婷婷综合激情 | 亚洲国产三级 | 69国产在线观看 | 欧美一区二区三区不卡 | 九九视频精品免费 | 国产字幕在线看 | 欧美成人一二区 | 深爱激情站| av视屏在线播放 | 国产一卡二卡四卡国 | 成人h在线 | 毛片网站观看 | 久久一区二区免费视频 | 亚洲成a人片在线www | 久久免费中文视频 | 国产精品视频免费观看 | 日韩色在线观看 | 欧美日韩国产三级 | 在线免费观看国产视频 | 99视频精品免费视频 | 日韩精品久久久久久久电影99爱 | 国产麻豆视频 | 久久久久久久久久久影视 | 色偷偷人人澡久久超碰69 | 一级黄色在线免费观看 | h动漫中文字幕 | 久久区二区 | 久久艹在线观看 | 久久经典视频 | 99久久电影 | 国产成人一区二区在线观看 |