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

山寨:不是最好的,是最適合我們的!歡迎體驗(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)楹苋菀桌斫猓械膱D形歸根到底都是由點(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)境下,一旦把控件插入到編程項目中,就可以通過接口使用控件所提供的各種方法。

由于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++編程項目
使用Visual C++“File | New”打開新建工程對話框,使用MFC AppWizard(exe)產(chǎn)生一個新的MFC應(yīng)用程序,我們把工程名稱取為“mmap”,該向?qū)б还灿?步,前5步都按缺省選項,第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菜單中增加一個“定位”菜單項至“查看”菜單下,設(shè)其ID號為ID_FEATURE_LOCATE。

第二步,使用類向?qū)В–lass Wizzard)產(chǎn)生該菜單項在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 閱讀(1115) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


廣告信息(免費(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>
            久久视频精品在线| 欧美日韩精品一本二本三本| 国产人久久人人人人爽| 午夜视频久久久| 亚洲一区二区在线免费观看| 国产精品视频你懂的| 久久aⅴ国产紧身牛仔裤| 久久国内精品自在自线400部| 永久免费精品影视网站| 亚洲高清不卡在线| 欧美另类videos死尸| 亚洲欧美国内爽妇网| 欧美中文字幕不卡| 亚洲激情成人| 正在播放欧美一区| 在线日韩精品视频| 一本色道久久综合亚洲二区三区 | 欧美国产三区| 欧美精品在线视频| 性亚洲最疯狂xxxx高清| 麻豆精品网站| 亚洲综合精品自拍| 久久亚洲国产精品一区二区| 一区二区电影免费观看| 欧美在线视屏| 一区二区三区视频在线观看| 欧美一区二区三区在线| 亚洲人成人一区二区三区| 亚洲一区二区综合| 亚洲国产高清aⅴ视频| 亚洲视频在线观看免费| 136国产福利精品导航网址| 9久re热视频在线精品| 在线观看视频一区二区| 亚洲综合视频网| 最新日韩在线| 久久黄金**| 亚洲欧美视频一区| 欧美精品一卡| 欧美成人精品福利| 国产午夜精品视频| 一区二区三欧美| 亚洲日本免费| 久久精品女人| 久久九九国产精品怡红院| 欧美日韩一区二区视频在线观看 | 久久久久久久网站| 欧美三级网址| 亚洲精品少妇30p| 亚洲国产另类久久久精品极度| 午夜精品久久久久久久久| 亚洲视频欧美视频| 欧美久久久久久蜜桃| 欧美激情第五页| 在线日韩一区二区| 欧美一区二区三区电影在线观看| 亚洲一区成人| 欧美三级中文字幕在线观看| 亚洲激精日韩激精欧美精品| 一区二区三区在线视频播放| 欧美一区二区视频免费观看| 亚洲欧美一区在线| 国产精品爽黄69| 亚洲一品av免费观看| 亚洲欧美日韩国产综合| 国产精品国产三级国产专区53| 亚洲精品中文字幕女同| 99伊人成综合| 欧美日韩国产综合一区二区| 亚洲精品久久久久久下一站| 99re8这里有精品热视频免费| 欧美美女视频| 一区二区三区精品| 欧美一区二区在线免费播放| 国产一区二区精品久久| 欧美一区二区三区在| 久热精品视频在线免费观看| 在线日韩av永久免费观看| 麻豆精品精华液| 亚洲精品三级| 欧美诱惑福利视频| 在线成人中文字幕| 欧美区亚洲区| 亚洲欧美国内爽妇网| 久久久久国色av免费观看性色| 在线观看日韩| 欧美人与性动交a欧美精品| 亚洲精品一区二区三区99| 亚洲免费视频成人| 国产综合色产| 欧美激情一区二区三区不卡| 亚洲网友自拍| 欧美va亚洲va香蕉在线| 亚洲桃花岛网站| 国产亚洲一区二区精品| 免费试看一区| 亚洲一卡久久| 亚洲高清不卡一区| 午夜一区二区三区在线观看| 在线观看亚洲| 国产精品乱码一区二三区小蝌蚪| 久久精品国产视频| av成人老司机| 你懂的国产精品| 午夜精品视频在线观看| 亚洲第一区色| 国产美女精品在线| 欧美v日韩v国产v| 亚洲欧美在线一区| 亚洲黄色片网站| 久久久免费av| 亚洲欧美激情一区| 亚洲精品久久久久久久久| 国产婷婷成人久久av免费高清| 女主播福利一区| 久久九九国产精品| 亚洲午夜在线| 亚洲美女视频网| 欧美激情一二区| 另类尿喷潮videofree| 亚洲永久网站| 一本久久精品一区二区| 在线看视频不卡| 国产色爱av资源综合区| 国产精品福利影院| 欧美日本韩国| 欧美国产精品久久| 美女脱光内衣内裤视频久久网站| 午夜在线视频观看日韩17c| 99在线热播精品免费| 亚洲国产精品嫩草影院| 欧美高清在线观看| 免费在线一区二区| 鲁大师影院一区二区三区| 欧美在线观看视频在线| 午夜精品久久| 性色av一区二区怡红| 亚洲欧美日本另类| 亚洲男女毛片无遮挡| 亚洲一级二级| 午夜日韩福利| 久久经典综合| 久久久久欧美精品| 久久亚洲二区| 欧美freesex8一10精品| 免费久久99精品国产自| 欧美大色视频| 欧美激情片在线观看| 亚洲高清免费| 亚洲精品影视在线观看| 亚洲最新在线| 亚洲小视频在线观看| 亚洲在线电影| 久久精精品视频| 性欧美大战久久久久久久免费观看| 一区二区av在线| 亚洲一区制服诱惑| 欧美一二三视频| 久久久噜噜噜久噜久久| 欧美黄色一区二区| 亚洲另类自拍| 亚洲欧美成人综合| 久久视频国产精品免费视频在线| 噜噜噜91成人网| 欧美日韩一区二区三区免费看| 国产精品素人视频| 加勒比av一区二区| 艳妇臀荡乳欲伦亚洲一区| 亚洲欧美文学| 模特精品在线| 一本一本久久a久久精品综合麻豆| 亚洲欧美激情视频| 久久一区二区视频| 欧美视频一区| 激情婷婷久久| 亚洲尤物在线视频观看| 久久久免费精品视频| 91久久在线| 欧美一区免费| 欧美日韩亚洲免费| 一区免费观看视频| 亚洲一区二区三区免费视频| 狼人天天伊人久久| 日韩午夜电影在线观看| 久久精品国产久精国产一老狼 | 午夜一级久久| 欧美国产第一页| 国产一区二区毛片| 一区二区电影免费观看| 久久亚洲午夜电影| 一区二区欧美在线| 乱码第一页成人| 国产无一区二区| 亚洲在线不卡| 亚洲黄页视频免费观看| 久久九九精品| 国产精品一区二区久久久久| 艳女tv在线观看国产一区| 免费在线一区二区| 午夜在线电影亚洲一区|