青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

山寨:不是最好的,是最適合我們的!歡迎體驗(yàn)山寨 中文版MSDN

Blog @ Blog

當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達(dá)

常用鏈接

統(tǒng)計

積分與排名

BBS

Blog

Web

最新評論

MapObjects開發(fā)技術(shù) (VC++)

MapObjects是一組基于COMTRANBBS技術(shù)的地圖應(yīng)用組件,它由一個稱為Map的ActiveX控件(OCX)和約45個自動化對象組成,在標(biāo)準(zhǔn)的Windows編程環(huán)境下,能夠與其他圖形、多媒體、數(shù)據(jù)庫開發(fā)技術(shù)組成完全獨(dú)立的綜合性應(yīng)用軟件,是基于前端應(yīng)用業(yè)務(wù)的良好的地圖開發(fā)環(huán)境。

MapObjects是全球最大的GIS軟件供應(yīng)商ESRI公司在業(yè)界最早推出的GIS軟件組件,它起點(diǎn)高、功能強(qiáng)、結(jié)構(gòu)優(yōu)雅。ESRI在推出其每一個版本時,都采取了非常嚴(yán)謹(jǐn)慎重的態(tài)度。從1.0版本算起,MapObjects正式問世已經(jīng)5年,才發(fā)展到2.1版本,可見每個版本質(zhì)量控制之嚴(yán)格。事實(shí)上,MapObjects是全球范圍內(nèi)使用最廣的GIS組件,也是潛在錯誤被最充分暴露并得以糾正的軟件組件,其穩(wěn)定可靠性無以置疑。有經(jīng)驗(yàn)的程序員都知道,在軟件開發(fā)過程中,穩(wěn)定性壓倒一切,而這正是MapObjects能被成功應(yīng)用的重要前提和保證。

作為ESRI公司GIS軟件族的重要成員,憑借ESRI公司在GIS領(lǐng)域的領(lǐng)先技術(shù)和市場地位,MapObjects操作的數(shù)據(jù)資源與ESRI的旗艦產(chǎn)品ArcGIS完全兼容,從結(jié)構(gòu)簡練的桌面數(shù)據(jù)格式(Shape文件)到以拓?fù)潢P(guān)系為基礎(chǔ)的經(jīng)典ArcInfo Coverage,以至基于數(shù)據(jù)庫(DBMS)和ArcSDE基礎(chǔ)之上的Geodatabase,都能夠被MapObjects讀取。除了矢量數(shù)據(jù)以外,MapObjects還能夠讀取多種格式的柵格數(shù)據(jù),如BMP、TIF、JPEG、ArcInfo Grid、Erdas Image等。MapObjects本身也能夠生成Shape文件格式的GIS數(shù)據(jù),該格式已經(jīng)成為GIS業(yè)界事實(shí)上的基于桌面應(yīng)用的標(biāo)準(zhǔn)。采用MapObjects,能夠最大限度地與主流GIS技術(shù)融合,保護(hù)用戶在數(shù)據(jù)生產(chǎn)、功能開發(fā)、以及人員培訓(xùn)上所作的一切投資。

1、 MapObjects的體系結(jié)構(gòu)
MapObjects可以說得上是最優(yōu)雅簡潔的GIS軟件組件。我們這么說,是因?yàn)樗宰钌俚慕涌谔峁┝顺S玫腉IS功能,甚至GPS的動態(tài)特性,同時做到了結(jié)構(gòu)合理,簡單明了,容易理解和擴(kuò)展。與之相比,其他的GIS組件,要不是由于提供的功能過多而破壞了其內(nèi)在的結(jié)構(gòu)美并影響了用戶擴(kuò)展的靈活性,就是結(jié)構(gòu)過于簡單而使功能大大弱化。可以說,MapObjects在功能和結(jié)構(gòu)兩者之間,取得了完美平衡,體現(xiàn)出了軟件的藝術(shù)性,給人帶來愉悅的感受。

1.1 數(shù)據(jù)結(jié)構(gòu)
從MapObjects對地圖數(shù)據(jù)的組織方式來看,概念清晰,易于理解。它認(rèn)為一個綜合性的地圖由多個圖層構(gòu)成,圖層數(shù)據(jù)來源廣泛,既可以是GIS矢量圖層,也可以是CAD圖層,甚至影像數(shù)據(jù)。對于GIS和CAD的矢量圖層,其內(nèi)部統(tǒng)一用記錄集(Recordset)來表達(dá),這樣就抹平了各種不同格式數(shù)據(jù)之間在內(nèi)存中的表達(dá)鴻溝,簡化了程序員的數(shù)據(jù)觀點(diǎn)。記錄集正象關(guān)系數(shù)據(jù)庫中的二維表,行表示每個要素、列表示每個屬性。如果含有名稱為 “Shape”的列,則該記錄集表示的是地圖要素,否則表示的是普通的數(shù)據(jù)庫表格。這樣,在數(shù)據(jù)結(jié)構(gòu)內(nèi)部就消除了GIS和MIS數(shù)據(jù)之間的差異,使程序員開發(fā)GMIS綜合應(yīng)用系統(tǒng)易如反掌。



Shape字段以面向?qū)ο蟮募夹g(shù)封裝了要素的圖形部分。它把圖形劃分為三種類型,即點(diǎn)、線、面。這些幾何類型既簡單又復(fù)雜,說它簡單,是因?yàn)楹苋菀桌斫?,所有的圖形歸根到底都是由點(diǎn)、線、面構(gòu)成的;說它復(fù)雜,是因?yàn)檫@些點(diǎn)、線、面并不是簡單的點(diǎn)、線、面,實(shí)際上它引入了一個部件(Part)的概念,由點(diǎn)構(gòu)成部件,部件由復(fù)合點(diǎn)構(gòu)成、線和面則由部件構(gòu)成。

 

如果只有一個部件,則它是簡單的線或面,如果有兩個以上的部件,則構(gòu)成復(fù)合線或面。例如夏威夷群島,由很多小島嶼構(gòu)成,但它是一個整體,其中的每個小島都可以用Part來表示,多個Part構(gòu)成的多邊形放到一個Shape字段中。

 

至于注記,則被描述為屬性字段的自動標(biāo)注。標(biāo)注的位置由Shape字段中的圖形要素決定,它可以是點(diǎn)、線或面,通常是線。標(biāo)注的內(nèi)容由普通屬性表示,既可以是字符型,也可以是整型或浮點(diǎn)型,通常是字符型。這樣,一切要素既可以按圖形表示,也可以按其屬性內(nèi)容標(biāo)注顯示,甚至可以兩者同時顯示,地圖顯示和制圖的方式是極為靈活的。

1.2 功能接口
再從MapObjects所提供的功能接口來看,常用的地圖應(yīng)用基本上都能實(shí)現(xiàn),例如:

* 創(chuàng)建新的Shape文件
* 更新屬性或圖形數(shù)據(jù)
* 繪制點(diǎn)、線、橢圓、矩形和多邊形等圖形要素
* 繪制描述性的文本注記
* 地圖簡單點(diǎn)取查詢、空間查詢、相對位置查詢、SQL邏輯條件查詢等
* 空間統(tǒng)計
* 地圖縮放和漫游
* 豐富的繪圖方式,如按值潤色、分類顯示、繪制密度圖、產(chǎn)生含各類圖表的專題圖等。
* 屬性自動標(biāo)注
* 顯示航空和衛(wèi)星遙感影像
* 動態(tài)顯示實(shí)時或順時數(shù)據(jù),如GPS動態(tài)監(jiān)測
* 地址匹配
* 投影變換
* Buffer、Union、Intersect等空間分析算子

通過調(diào)用這些接口,能夠開發(fā)從簡單的電子地圖應(yīng)用,至復(fù)雜的基于GIS/GPS/RS的3S應(yīng)用。利用空間分析算子,甚至可以構(gòu)造出具有一定復(fù)雜度的空間分析模型。由于提供了數(shù)據(jù)更新接口,用戶能夠擴(kuò)展出自己的編輯工具,富融公司便基于MapObjects 2.0/2.0a/2.1擴(kuò)展了近50種的編輯工具,使之能夠滿足更為廣泛的應(yīng)用要求。

2、 MapObjects的開發(fā)過程
MapObjects的使用和開發(fā)過程與其他的ActiveX控件沒有兩樣,在Visual Basic、Delphi、Visual C++等能夠支持控件開發(fā)的編程環(huán)境下,一旦把控件插入到編程項(xiàng)目中,就可以通過接口使用控件所提供的各種方法。

由于MapObjects聯(lián)機(jī)幫助和隨機(jī)手冊中的大部分編程說明都采用Visual Basic作為代碼示例,而Visual C++的說明相對較少,為了方便Visual C++程序員的工作,以下的開發(fā)過程和代碼示例使用Visual C++,在其他環(huán)境下的編程過程大致類似。

以下說明均假設(shè)在Windows下已成功地安裝了MapObjects控件。我們將構(gòu)造一個簡單的電子地圖應(yīng)用程序,它可以增加一個新圖層,實(shí)現(xiàn)地圖的放大、縮小,并且可以實(shí)現(xiàn)要素的定位功能。

2.1 生成Visual C++編程項(xiàng)目
使用Visual C++“File | New”打開新建工程對話框,使用MFC AppWizard(exe)產(chǎn)生一個新的MFC應(yīng)用程序,我們把工程名稱取為“mmap”,該向?qū)б还灿?步,前5步都按缺省選項(xiàng),第6步把Basic Class由CView改為CFormView,這樣完成后產(chǎn)生的應(yīng)用程序?qū)⒂幸粋€表單模板,其標(biāo)識號為IDD_MMAP_FROM,初始狀態(tài)是一行靜態(tài)文本,內(nèi)容為“TODO:在這個對話框里設(shè)置表格控制”(如果是英文版或選擇的語言為英文,則提示換成英文)。把這行字刪掉,以便在此表單中加入地圖控件。

2.2 加入MapObjects地圖控件
使用“Project | Add To Project | Components and Controls...”菜單功能打開“Components and Controls Gallery”對話框,從其“Registered ActiveX Controls”文件夾下的已登記控件列表中找到“MapObjects 2.1 Map Control”并按“Insert”按鈕,系統(tǒng)將生成該控件及其自動化對象的一系列包裹類(Wrapper Class),把第一個類名稱由CMap1改為CMoMap,實(shí)現(xiàn)文件保持不變,即map.h和map.cpp。結(jié)束該對話框后,在控制條中會增加一個地圖控件圖標(biāo),把該圖標(biāo)插入到IDD_MMAP_FORM表單中。然后選中剛插入的控件圖標(biāo),在用左手按住鍵盤的“Ctrl”鍵的情況下,右手雙擊鼠標(biāo)左鍵,將彈出一個“Add Member Variable”對話框,在成員變量名稱欄輸入“m_map”,下面兩欄保持不變,即Category為Control,Variable Type為CMoMap。做完這些工作后,回到ClassView中觀察CMmapView類,將發(fā)現(xiàn)增加了一個類型為CMoMap的m_map對象,利用它就可以操作地圖了。

2.3 使用Map對象增加圖層
這時編譯程序,應(yīng)該不會出錯,但在運(yùn)行時,發(fā)現(xiàn)除了在表單視圖中增加了一個空白的代表地圖控件的小圖標(biāo)外,應(yīng)用程序與剛生成時的情況并沒有什么太大的區(qū)別。為了增加圖層數(shù)據(jù),首先要把地圖控件的尺寸放大到與表單視圖一樣大,然后把圖層數(shù)據(jù)加入到地圖對象中。

第一步、找到CMmapView的OnInitialUpdate()方法,作如下操作:
(1)如果原來有“ResizeParentToFit();”語句,注釋掉或刪除它;
(2)在返回語句之前增加如下語句:

// 將顯示尺寸調(diào)整到整個客戶區(qū)
CRect client;
GetClientRect(&client);
int cx=client.Width();
int cy=client.Height();
m_map.SetWindowPos(0, 0, 0, cx, cy, SWP_NOZORDER);

第二步、找到CChildFrame,重載其OnClientCreate()方法,該方法將在創(chuàng)建表單客戶區(qū)時被調(diào)用,在其返回語句之前增加語句:“MDIMaximine();”。

完成上面兩步后,再次編譯程序并運(yùn)行,在原來表單客戶區(qū)應(yīng)該出現(xiàn)一個空白的地圖,接下來往這個空白圖上增加圖層。為了簡單起見,我們假設(shè)圖層數(shù)據(jù)放在C:\data目錄下,圖層格式為Shape文件,其文件名為test.shp。

第三步、在CMmapView中創(chuàng)建一個增加shape文件的方法AddShpLayer(),其實(shí)現(xiàn)為:
增加SHP圖層,返回圖層內(nèi)部名稱,為空表示不成功。
CString CMmapView::AddShpLayer(const CString & path, COLORREF color, short symbolSize, short symbolStyle)
{

CMoDataConnection conn;
if (!conn.CreateDispatch(TEXT("MapObjects2.DataConnection"))) return "";
conn.SetDatabase(GetFileDirectory(path));
if (!conn.Connect()) return "";

// Add layer specified by path
CMoLayers layers=m_map.GetLayers();
CMoMapLayer layer;
if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer"))) return "";

CString LayerName = GetFileTitle(path);
CMoGeoDataset geoDataset=conn.FindGeoDataset(LayerName);
if(!geoDataset) return "";

layer.SetGeoDataset(geoDataset);
CMoSymbol layerSymbol(layer.GetSymbol());

if (color != -1) layerSymbol.SetColor(color); // Set color if specified

layerSymbol.SetSize(symbolSize);
layerSymbol.SetStyle(symbolStyle);
layers.Add(layer);
return(layer.GetName());

}

為了使這段代碼能夠被順利編譯,還要在mmapview.cpp的文件開始處增加如下include語句:
#include "modataconnection.h"
#include "molayers.h"
#include "momaplayer.h"
#include "mogeodataset.h"
#include "mosymbol.h"

另外,在CMmapView中增加幾個輔助函數(shù),用于分析圖層文件路徑中的文件名、目錄名:
CString CMmapView::GetFileDirectory(const CString& path)
{

int pos = path.ReverseFind('\\');
if (pos >= 0) return path.Left(pos);
return "";

}

CString CMmapView::GetFileTitle(const CString& path)
{

CString strResult = GetFileName(path);
int pos = strResult.ReverseFind('.');
if (pos >= 0) return strResult.Left(pos);
return strResult;

}

CString CMmapView::GetFileName(const CString& path)
{

int pos = path.ReverseFind('\\');
if (pos >= 0) return path.Right(path.GetLength() - pos - 1);
return path;

}

第四步,回到CMmapView的OnInitialUpdate(),在其返回之前加上如下語句:
AddShpLayer("c:\\data\\test.shp", RGB(125,125,125), 0, 0);

再次編譯后運(yùn)行(運(yùn)行前確保C:\data\test.shp圖層文件存在,即至少包括c:\data\test.dbf、c:\data\test.shp、c:\data\test.shx三個文件),應(yīng)該能夠觀察到test圖層被加入到了地圖中。

2.4 使用map對象操作地圖
接下來我們完成對地圖的放大縮小操作,當(dāng)點(diǎn)擊鼠標(biāo)左鍵時,地圖放大1倍,當(dāng)點(diǎn)擊鼠標(biāo)左鍵時,地圖回到全圖顯示。

第一步,使用類向?qū)В–lass Wizzard)在CMmapView中增加一個地圖消息響應(yīng)函數(shù)。即選中CMmapView中的IDC_MAP1,在Message列表框中雙擊MouseDown,將生成一個
OnMouseDownMap1()消息函數(shù)。

第二步,在OnMouseDownMap1()中加入如下語句:
if(Button==1)
{

CMoRectangle rect=m_map.GetExtent();
rect.ScaleRectangle(0.5);
m_map.SetExtent(rect);

}
else if(Button==2)
{

CMoRectangle rect=m_map.GetFullExtent();
m_map.SetExtent(rect);

}

為了使用CMoRectangle,還需要在mmapview.cpp的開始部分加一個include語句,即:
#include "morectangle.h"

按下鼠標(biāo)左鍵時,在消息響應(yīng)函數(shù)中的Button參數(shù)記錄按下的是哪個鍵,1表示左鍵,2表示右鍵。編譯后運(yùn)行,分別點(diǎn)擊鼠標(biāo)左右鍵,應(yīng)該觀察到地圖放大和縮回到全圖的效果。

2.5 使用Recordset對象檢索數(shù)據(jù)
接下來我們想找到圖層中的第一個要素,即其FeatureId為1(在MapObjects要素圖層中,F(xiàn)eatureId是其固有的字段,用于記錄每個要素在圖層中的序號),找到這個要素后,把它放在視圖窗口的中央顯示,這就類似于一個條件定位的功能。

第一步,在IDR_MMAPTYPE菜單中增加一個“定位”菜單項(xiàng)至“查看”菜單下,設(shè)其ID號為ID_FEATURE_LOCATE。

第二步,使用類向?qū)В–lass Wizzard)產(chǎn)生該菜單項(xiàng)在CMmapView中的消息響應(yīng)函數(shù),即與COMMAND和UPDATA_COMMAND_UI兩個消息對應(yīng)的OnFeatureLocate()和OnUpdateFeatureLocate(),在OnUpdateFeatureLocate()的實(shí)現(xiàn)中增加下行語句,使該菜單總是處于激活狀態(tài):
pCmdUI->Enable();

第三步,在OnFeatureLocate()中增加如下語句:

 

void CMmapView::OnFeatureLocate()
{
CMoLayers layers=m_map.GetLayers();
CMoMapLayer layer=layers.Item(COleVariant(TEXT("test")));
if(layer)
{
CMoRecordset recs=layer.SearchExpression(_T("FeatureId = 1"));
recs.MoveFirst();
if(!recs.GetEof())
{

CMoFields fields=recs.GetFields();
CMoField shapeField=fields.Item(COleVariant(TEXT("Shape")));

if(shapeField)
{
switch(shapeField.GetType())
{
case 21:
{
CMoPoint point=shapeField.GetValue().pdispVal;
if(point) m_map.CenterAt(point.GetX(), point.GetY());
}
break;
case 22:
{
CMoLine line=shapeField.GetValue().pdispVal;
if(line)
{
CMoRectangle rect=line.GetExtent();
rect.ScaleRectangle(1.5);
m_map.SetExtent(rect);
}
}
break;
case 23:
{
CMoPolygon polygon=shapeField.GetValue().pdispVal;
if(polygon)
{
CMoRectangle rect=polygon.GetExtent();
rect.ScaleRectangle(1.5);
m_map.SetExtent(rect);
}

}
break;
}
}
}
}
}

在這里使用到了記錄集、字段、點(diǎn)、線、面等對象,因此在文件頭部還要增加如下include文件:
#include "morecordset.h"
#include "mofields.h"
#include "mofield.h"
#include "mopoint.h"
#include "moline.h"
#include "mopolygon.h"

在switch/case語句中的21表示要素的幾何類型為點(diǎn),22表示線,23表示面。編譯后運(yùn)行,并選擇“定位”菜單,程序?qū)⒄业絫est圖層中的第一個要素,并把它放在窗口的中央顯示出來。如果加入的圖層數(shù)據(jù)是點(diǎn)層,我們建議把其symbolSize設(shè)為10,以便觀察到點(diǎn)位。即把OnInitialUpdate()中的AddShpLayer方法調(diào)用換作:
AddShpLayer("c:\\data\test.shp", RGB(255,0,0), 10, 0);

從這個例子中我們看到了如何通過圖層(Layer)執(zhí)行一個SQL查詢語句,獲得記錄集后如何對其進(jìn)行檢索,并提取出具體字段內(nèi)容。對于圖形圖層,“Shape”字段也是固定存在的,其中存放了該要素的圖形幾何部分,通過使用字段的GetType()方法可以獲得該圖層是點(diǎn)層、線層或面層,并作出相應(yīng)的定位處理。字段的GetValue()方法返回的是一個VARIANT類型值,其中封裝了各種各樣的數(shù)據(jù)類型,在Shape字段中,它封裝的是一個圖形要素,可以通過pdispVal取得它的真正內(nèi)容,并根據(jù)圖層類型轉(zhuǎn)換為相應(yīng)的圖形要素,作為計算地圖顯示范圍的依據(jù)。

posted on 2008-03-27 11:30 isabc 閱讀(1110) 評論(0)  編輯 收藏 引用

廣告信息(免費(fèi)廣告聯(lián)系)

中文版MSDN:
歡迎體驗(yàn)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情第三页| 99精品视频免费观看| 免费在线亚洲欧美| 欧美jizzhd精品欧美喷水 | 欧美成人精品激情在线观看| 欧美国产综合| avtt综合网| 欧美激情自拍| 99视频精品免费观看| 亚洲第一黄色网| 久久久久久久久久久久久久一区 | 国产精品久久99| 新67194成人永久网站| 欧美黄色大片网站| 久久综合久久美利坚合众国| 99精品视频免费| 亚洲国产精品久久久久秋霞不卡| 国产精品久久久久久久久久三级 | 精品成人a区在线观看| 亚洲国产精品va在线看黑人| 午夜久久久久| 欧美成人69av| 亚洲一区二区免费看| 亚洲剧情一区二区| 亚洲国产精品一区制服丝袜| 亚洲欧美一区二区三区久久| 嫩草伊人久久精品少妇av杨幂| 国产精品久久久久久户外露出| 国产噜噜噜噜噜久久久久久久久| 欧美一区二区久久久| 欧美大片在线观看一区| 亚洲午夜在线| 欧美亚洲视频| av成人黄色| av成人老司机| 亚洲午夜精品久久久久久app| 亚洲乱码国产乱码精品精| 欧美国产乱视频| 亚洲一区二区精品视频| 中文av一区二区| 欧美与黑人午夜性猛交久久久| 韩国自拍一区| 伊人久久成人| 久久国产主播| 欧美不卡在线| 久久国产精品99久久久久久老狼| 久久久人成影片一区二区三区| 欧美激情一区二区三区| 久久九九免费视频| 久久九九全国免费精品观看| 国产伦精品一区二区三区照片91 | 欧美在线网址| 亚洲一区二区成人在线观看| 一本色道久久综合狠狠躁篇怎么玩| 免费中文字幕日韩欧美| 久久国产成人| 欧美日韩国产亚洲一区 | 国产精品青草综合久久久久99| 欧美在线999| 欧美精品在线播放| 国产精品国产精品国产专区不蜜| 国产精品欧美激情| 亚洲国产免费看| 久久国产主播精品| 亚洲免费观看高清完整版在线观看熊 | 久久久天天操| 麻豆精品在线观看| 国产精品一二三四区| 国产一区二区久久久| 一区二区电影免费观看| 日韩一级精品视频在线观看| 亚洲国语精品自产拍在线观看| 亚洲国产精品一区| 国产视频在线观看一区二区| 尤物在线精品| 一区二区日韩| 一区二区三区中文在线观看| 一区二区精品国产| 午夜国产精品视频| 狠狠色丁香久久婷婷综合_中| 亚洲欧洲在线一区| 欧美男人的天堂| 亚洲精品之草原avav久久| 亚洲欧美伊人| 香蕉成人伊视频在线观看| 国产曰批免费观看久久久| 一区二区三区欧美在线| 亚洲国产精彩中文乱码av在线播放| 正在播放亚洲一区| 亚洲午夜黄色| 伊人婷婷欧美激情| 亚洲国产高清aⅴ视频| 久久精品国产亚洲高清剧情介绍| 国内精品美女在线观看| 老司机午夜精品视频在线观看| 免费欧美日韩| 亚洲欧美在线免费观看| 欧美福利电影网| 中文在线一区| 伊人久久大香线蕉综合热线 | 美女精品网站| 99re热精品| 欧美日本精品| 亚洲日本欧美天堂| 亚洲欧洲在线一区| 欧美日韩在线精品一区二区三区| 在线观看成人网| 亚洲电影网站| 亚洲午夜伦理| 欧美日一区二区在线观看 | 亚洲欧美精品| 国产精品国产三级国产普通话蜜臀 | 久久成人18免费观看| 亚洲图中文字幕| 欧美在线你懂的| 久久综合久久综合这里只有精品| 久久夜色精品国产| 国产欧美韩日| 欧美黄色一区| 欧美承认网站| 亚洲国产欧美在线人成| 亚洲欧洲日产国码二区| 噜噜噜噜噜久久久久久91| 久久国产精品久久国产精品| 欧美四级电影网站| 亚洲欧美日韩在线观看a三区| 欧美成人a视频| 久久蜜臀精品av| 亚洲午夜视频在线| 国产精品theporn88| 亚洲六月丁香色婷婷综合久久| 宅男精品视频| 狠狠色丁香久久婷婷综合_中| 蜜臀99久久精品久久久久久软件| 欧美成人精品在线播放| 日韩一级精品视频在线观看| 欧美日韩精品一区二区| 9i看片成人免费高清| 久久人91精品久久久久久不卡| 午夜精品久久久| 亚洲影院污污.| 亚洲自拍偷拍一区| 久久久久欧美| 欧美一级免费视频| 日韩午夜电影av| 久久国产夜色精品鲁鲁99| 亚洲区免费影片| 狠狠色伊人亚洲综合网站色| 欧美精品激情在线观看| 午夜精品电影| 欧美jizz19hd性欧美| 欧美高清视频在线| 国产精品亚洲片夜色在线| 在线欧美一区| 欧美大片免费观看在线观看网站推荐| 国产精品免费视频xxxx| 日韩天堂在线观看| 久久精品亚洲一区二区| 亚洲电影激情视频网站| 一区二区三区欧美| 欧美在线在线| 国产精品一区久久| 午夜国产精品视频免费体验区| 最新国产拍偷乱拍精品| 久久国产精品网站| 9国产精品视频| 亚洲欧美另类久久久精品2019| 欧美在线亚洲在线| 亚洲美女在线国产| 欧美aaa级| 91久久精品久久国产性色也91| 久久尤物视频| 国产欧美大片| 亚洲国产片色| 欧美福利电影网| 小处雏高清一区二区三区| 蜜桃久久精品一区二区| 国产精品视频最多的网站| 亚洲精品少妇30p| 久久久噜噜噜久久狠狠50岁| 欧美精品麻豆| 免费日韩成人| 欧美一级久久久| 91久久久久久久久久久久久| 免费亚洲婷婷| 欧美成人一区在线| 欧美与欧洲交xxxx免费观看| 亚洲国产99精品国自产| 牛人盗摄一区二区三区视频| 美女视频黄a大片欧美| 伊人久久亚洲影院| 亚洲免费黄色| 亚洲激情网站免费观看| 日韩视频在线免费| 亚洲日本视频| 欧美激情综合五月色丁香| 欧美亚洲一区| 免费永久网站黄欧美| 亚洲免费视频中文字幕| 欧美激情女人20p|