ǰ¶Îʱ¼äÁ¬ÐøÉÏÁËÒ»¸öÔ°࣬¼Ó°à¼ÓµãÍê³ÉÁËÒ»¸ö3D¹¥¼áÏîÄ¿¡£Ò²ËãÊÇÓÉ´«Í³webתÐ͵½webglͼÐÎѧ¿ª·¢ÖУ¬¿Ó²»ÉÙ£¬×öÁËÒ»ÏÂ×ܽá·ÖÏí¡£
1¡¢·¨ÏòÁ¿ÎÊÌâ
·¨ÏßÊÇ´¹Ö±ÓÚÎÒÃÇÏëÒªÕÕÁÁµÄÎïÌå±íÃæµÄÏòÁ¿¡£·¨Ïß´ú±í±íÃæµÄ·½ÏòÒò´ËËûÃÇΪ¹âÔ´ºÍÎïÌåµÄ½»»¥½¨Ä£ÖоßÓоö¶¨ÐÔ×÷Óá£Ã¿Ò»¸ö¶¥µã¶¼ÓÐÒ»¸ö¹ØÁªµÄ·¨ÏòÁ¿¡£

Èç¹ûÒ»¸ö¶¥µã±»¶à¸öÈý½ÇÐι²Ïí£¬¹²Ïí¶¥µãµÄ·¨ÏòÁ¿µÈÓÚ¹²Ïí¶¥µãÔÚ²»Í¬µÄÈý½ÇÐÎÖеķ¨ÏòÁ¿µÄºÍ¡£N=N1+N2;

ËùÒÔÈç¹û²»×öÈκδ¦Àí£¬Ö±½Ó½«3άÎïÌåµÄµã´«µÝ¸øBufferGeometry£¬ÄÇôÓÉÓÚ·¨ÏòÁ¿±»ºÏ³É£¬¾¹ýƬԪ×ÅÉ«Æ÷²åÖµºó£¬¾Í»áµÃµ½Õâ¸öºÚ²»ÁïÇïµÄЧ¹û
ÎҵĴ¦Àí·½Ê½Ê¹¶¥µãµÄ·¨ÏòÁ¿±£³ÖΨһ£¬ÄÇô¾ÍÐèÒªÔÚ¹²Ïí¶¥µã´¦£¬¿½±´Ò»·Ý¶¥µã£¬²¢ÖØÐ¼ÆËãË÷Òý£¬ÊǵÄÿ¸ö±»¶à¸öÃæ¹²ÏíµÄ¶¥µã¶¼Óжà·Ý£¬Ã¿Ò»·ÝÓÐÒ»¸öµ¥¶ÀµÄ·¨ÏòÁ¿£¬ÕâÑù¾Í¿ÉÒÔʹµÃÿ¸öÃæ¶¼ÓÐÒ»¸öÏàͬµÄÑÕÉ«

2¡¢¹âÔ´ÓëÃæ¿éÑÕÉ«
¿ª·¢¹ý³ÌÖÐÉè¼Æ¸øÁËÒ»Ì×ÅäÉ«£¬È»¶øÒ»µ©ÓйâÔ´£¬Ãæ¿éµÄ×îÖÕÑÕÉ«¾Í»áÓë¹âÔ´»ìºÏ£¬ÑÕÉ«×ÔÈ»Óë×îÖÕÉè¼ÆµÄÑÕÉ«´óÏྶͥ¡£ÏÂÃæÊÇLambert¹âÕÕÄ£Ð͵ĻìºÏËã·¨¡£

¶øÇÒ²úÆ·µÄÒªÇóÊǶ¥Ãæ±£³ÖÉè¼ÆµÄÑÕÉ«£¬²àÃæÐèÒª¼ÓÈë¹âÔ´±ä»¯Ð§¹û£¬µ±¶ÔµØÍ¼×ö²Ù×÷ʱ£¬²àÃæÑÕÉ«ÐèÒª¸ù¾ÝÊӽǷ¢Éú±ä»¯¡£ÄÇôÎҵĴ¦Àí·½Ê½Êǽ«¶¥ÃæÓë²àÃæ·Ö±ð»æÖÆ(´´½¨Á½¸öMesh)£¬¶¥ÃæÊ¹ÓÃMeshLambertMaterialµÄemssiveÊôÐÔÉèÖÃ×Ô·¢¹âÑÕÉ«ÓëÉè¼ÆÑÕÉ«±£³ÖÒ»Ö£¬Ò²¾Í²»»áÓйâÕÕЧ¹û£¬²àÃæ×ÛºÏʹÓÃEmssiveÓëcolorÀ´Ó¦ÓùâԴЧ¹û¡£

3¡¢POI±ê×¢
ThreeÖд´½¨Ê¼ÖÕ³¯ÏòÏà»úµÄPOI¿ÉÒÔʹÓÃSpriteÀ࣬ͬʱ¿ÉÒÔ½«ÎÄ×ÖºÍͼƬ»æÖÆÔÚcanvasÉÏ£¬½«canvas×÷ÎªÎÆÀíÌùͼ·Åµ½SpriteÉÏ¡£µ«ÕâÀïµÄÒ»¸öÎÊÌâÊÇcanvasͼÏñ½«»áÊ§Õæ£¬ÔÒòÊÇûÓкÏÀíµÄÉèÖÃspriteµÄscale£¬µ¼ÖÂͼƬ±»ÀÉì»òËõ·ÅÊ§Õæ¡£

ÎÊÌâµÄ½â¾ö˼·ÊÇÒª±£Ö¤ÔÚ3dÊÀ½çÖеÄËõ·Å³ß´ç£¬¾¹ýһϵÁб任ͶӰµ½Ïà»úÆÁÄ»ºóÈÔÈ»ÓëcanvasÔÚÆÁÄ»ÉϵĴóС±£³ÖÒ»Ö¡£ÕâÐèÒªÎÒÃǼÆËã³öÆÁÄ»ÏñËØÓë3dÊÀ½çÖеij¤¶Èµ¥Î»µÄ±ÈÖµ£¬È»ºó½«spriteËõ·Åµ½ºÏÊʵÄ3d³¤¶È¡£


4¡¢µã»÷ʰȡÎÊÌâ
webglÖÐ3DÎïÌ廿֯µ½ÆÁÄ»½«¾¹ýÒÔϼ¸¸ö½×¶Î

ËùÒÔÒªÔÚ3DÓ¦ÓÃ×öµã»÷ʰȡ£¬Ê×ÏÈÒª½«ÆÁÄ»×ø±êϵת»¯³Éndc×ø±êϵ£¬ÕâʱºòµÃµ½ndcµÄxy×ø±ê£¬ÓÉÓÚ2dÆÁÄ»²¢Ã»ÓÐzÖµËùÒÔ£¬ÆÁÄ»µãת»¯³É3d×ø±êµÄz¿ÉÒÔËæÒâȡֵ£¬Ò»°ãÈ¡0.5(zÔÚ-1µ½1Ö®¼ä)¡£
function
fromSreenToNdc(x, y, container) {
return {
x: x / container.offsetWidth * 2 - 1,
y: -y / container.offsetHeight * 2 + 1,
z: 1
};
}
function fromNdcToScreen(x, y, container) {
return {
x: (x + 1) / 2 * container.offsetWidth,
y: (1 - y) / 2 * container.offsetHeight
};
} |
È»ºó½«ndc×ø±êת»¯³É3D×ø±ê£º
ndc
= P * MV * Vec4
Vec4 = MV-1 * P -1 * ndc |
Õâ¸ö¹ý³ÌÔÚThreeÖеÄVector3ÀàÖÐÒѾÓÐʵÏÖ£º
unproject:
function () {
var matrix = new Matrix4();
return function unproject( camera ) {
matrix.multiplyMatrices( camera.matrixWorld,
matrix.getInverse(
camera.projectionMatrix ) );
return this.applyMatrix4( matrix );
};
}(), |
½«µÃµ½µÄ3dµãÓëÏà»úλÖýáºÏÆðÀ´×öÒ»ÌõÉäÏߣ¬·Ö±ðÓ볡¾°ÖеÄÎïÌå½øÐÐÅöײ¼ì²â¡£Ê×ÏÈÓëÎïÌåµÄÍâ°üÇò½øÐÐÏཻÐÔ¼ì²â£¬ÓëÇò²»ÏཻµÄÅųý£¬ÓëÇòÏཻµÄ±£´æ½øÈëÏÂÒ»²½´¦Àí¡£½«ËùÓÐÍâ°üÇòÓëÉäÏßÏཻµÄÎïÌå°´ÕÕ¾àÀëÏà»úÔ¶½ü½øÐÐÅÅÐò£¬È»ºó½«ÉäÏßÓë×é³ÉÎïÌåµÄÈý½ÇÐÎ×öÏཻÐÔ¼ì²â¡£Çó³öÏཻÎïÌå¡£µ±È»Õâ¸ö¹ý³ÌÒ²ÓÉThreeÖеÄRayCaster×öÁË·â×°£¬Ê¹ÓÃÆðÀ´ºÜ¼òµ¥£º
mouse.x
= ndcPos.x;
mouse.y = ndcPos.y;
this.raycaster.setFromCamera(mouse, camera);
var intersects = this.raycaster.intersectObjects(this._
getIntersectMeshes(floor,
zoom), true); |
5¡¢ÐÔÄÜÓÅ»¯
Ëæ×ų¡¾°ÖеÄÎïÌåÔ½À´Ô½¶à£¬»æÖƹý³ÌÔ½À´Ô½ºÄʱ£¬µ¼ÖÂÊÖ»ú¶Ë¼¸ºõÎÞ·¨Ê¹Óá£

ÔÚͼÐÎѧÀïÃæÓиöºÜÖØÒªµÄ¸ÅÄî½Ð¡°one draw all¡±Ò»´Î»æÖÆ£¬Ò²¾ÍÊÇ˵µ÷ÓûæÍ¼apiµÄ´ÎÊýÔ½ÉÙ£¬ÐÔÄÜÔ½¸ß¡£±ÈÈçcanvasÖеÄfillRect¡¢fillTextµÈ£¬webglÖеÄdrawElements¡¢drawArrays;ËùÒÔÕâÀïµÄ½â¾ö·½°¸ÊǶÔÏàͬÑùʽµÄÎïÌ壬°ÑËüÃǵIJàÃæºÍ¶¥ÃæÍ³Ò»·Åµ½Ò»¸öBufferGeometryÖС£ÕâÑù¿ÉÒÔ´ó´ó½µµÍ»æÍ¼apiµÄµ÷ÓôÎÊý£¬¼«´óµÄÌáÉýäÖȾÐÔÄÜ¡£

ÕâÑù½â¾öÁËäÖȾÐÔÄÜÎÊÌ⣬Ȼ¶ø´øÀ´ÁËÁíÒ»¸öÎÊÌ⣬ÏÖÔÚÊǰÉËùÓÐÑùʽÏàͬµÄÃæ·ÅÔÚÒ»¸öBufferGeometryÖÐ(ÎÒÃdzÆÎªÑùʽͼÐÎ)£¬ÄÇôÔÚÃæµã»÷ʱºò¾ÍÎÞ·¨µ¥¶ÀÅжϳöµ½µ×ÊÇÄĸöÎïÌå(ÎÒÃdzÆÎªÎïÌåͼÐÎ)±»Ñ¡ÖУ¬Ò²¾ÍÎÞ·¨¶ÔÕâ¸öÎïÌå½øÐиßÁÁËõ·Å´¦Àí¡£ÎҵĴ¦Àí·½Ê½ÊÇ£¬°ÑËùÓеÄÎïÌåµ¥¶ÀÉú³ÉÎïÌåͼÐα£´æÔÚÄÚ´æÖУ¬×öÃæµã»÷µÄʱºòÓÃÕⲿ·ÖÊý¾ÝÀ´×öÏཻÐÔ¼ì²â¡£¶ÔÓÚÑ¡ÖÐÎïÌåºóµÄ¸ßÁÁËõ·Å´¦Àí£¬Ê×ÏȰÑÑùÊ½ÃæÖÐÏàÓ¦²¿·Ö²Ã¼õµô£¬È»ºó°ÑÑ¡ÖеÄÎïÌåͼÐμÓÈëµ½³¡¾°ÖУ¬¶ÔËü½øÐÐËõ·Å¸ßÁÁ´¦Àí¡£²Ã¼ô·½·¨ÊÇ£¬¼Ç¼ÿ¸öÎïÌåÔÚÑùʽͼÐÎÖÐµÄÆäʵË÷ÒýλÖã¬ÔÚÐèÒª²ÃÇÐʱºò½«Õⲿ·ÖË÷ÒýÖÆÁã¡£ÔÚÐèÒª»Ö¸´µÄµØ·½ÔÚ°ÑÕⲿ·ÖË÷Òý»Ö¸´³ÉÔ×´¡£
6¡¢Ãæµã»÷ÒÆ¶¯µ½ÆÁÄ»ÖÐÑë
Õⲿ·ÖÒ²ÊÇÓöµ½Á˲»ÉÙ¿Ó£¬Ê×ÏȵÄÏë·¨ÊÇ£º
ÃæÖÐÐĵãĿǰÊÇÔÚÊÀ½ç×ø±êϵÄÚµÄ×ø±ê£¬ÏÈÓÃcenter.project(camera)µÃµ½¹éÒ»»¯Éè±¸×ø±ê£¬ÔÚ¸ù¾ÝndcµÃµ½ÆÁÄ»×ø±ê£¬¶øºó¸ù¾ÝÃæÖÐÐĵãÆÁÄ»×ø±êÓëÆÁÄ»ÖÐÐĵã×ø±ê×ö²åÖµ£¬µÃµ½Æ«ÒÆÁ¿£¬ÔÚ¸ù¾ÝOribitControlsÖеÄpan·½·¨À´¸üÐÂÏà»úλÖá£ÕâÖÖ·½Ê½×îÖÕÒÔʧ°Ü¸æÖÕ£¬ÒòΪÏà»ú¿ÉÄÜ×ö¸÷Öֱ任£¬ËùÒÔÆÁÄ»×ø±êµÄÆ«ÒÆÓë3dÊÀ½ç×ø±êϵÖеÄλÖùØÏµ²¢²»ÊÇÏßÐÔ¶ÔÓ¦µÄ¡£
×îÖÕµÄÏë·¨ÊÇ£º
ÎÒÃÇÏÖÔÚÏ뽫µã»÷ÃæµÄÖÐÐĵãÒÆµ½ÆÁÄ»ÖÐÐÄ£¬ÆÁÄ»ÖÐÐĵÄndc×ø±êÓÀÔ¶¶¼ÊÇ(0,0)ÎÒÃǵĹ۲ìÊÓÏßÓë½ü¾°ÃæµÄ½¹µãµÄndc×ø±êÒ²ÊÇ0,0;Ò²¾ÍÊÇ˵ÎÒÃÇÒª½«ÃæÖÐÐĵã×÷ΪÎÒÃǵĹ۲ìµã(ÆÁÄ»µÄÖÐÐÄÓÀÔ¶¶¼ÊÇÏà»úµÄ¹Û²ìÊÓÏß)£¬ÕâÀïÎÒÃÇ¿ÉÒÔÖ±½Ó½«ÃæÖÐÐÄËùνÊÓÏߵĹ۲ìµã£¬ÀûÓÃlookAt·½·¨ÇóÈ¡Ïà»ú¾ØÕ󣬵«Èç¹ûÕâÑù¼òµ¥´¦ÀíºóµÄЧ¹û¾Í»á¸øÈ˸оõÏà»úµÄ×Ë̬±ä»¯ÁË£¬Ò²¾ÍÊÇ»á¸Ð¾õ²¢²»ÊÇÆ½ÒƹýÈ¥µÄ£¬ËùÒÔÎÒÃÇÒª×öµÄÊDZ£³ÖÏà»úµ±Ç°×Ë̬½«ÃæÖÐÐÄ×÷ΪÏà»ú¹Û²ìµã¡£
»ØÏëÆ½ÒÆÊ±ÎÒÃǽ«ÆÁÄ»ÒÆ¶¯×ª»¯ÎªÏà»ú±ä»¯µÄ¹ý³ÌÊÇÖªµÀÆÁÄ»Æ«ÒÆÇótarget£¬ÕâÀïÎÒÃÇÒª×öµÄ¾ÍÊÇÖªµÀtarget·´ÍÆÆÁÄ»Æ«ÒÆµÄ¹ý³Ì¡£Ê×Ïȸù¾Ýµ±Ç°targetÓëÃæÖÐÐÄÇó³öÏà»úµÄÆ«ÒÆÏòÁ¿£¬¸ù¾ÝÏà»úÆ«ÒÆÏòÁ¿Çó³öÔÚÏà»úxÖáºÍupÖáµÄͶӰ³¤¶È£¬¸ù¾ÝͶӰ³¤¶È¾ÍÄÜ·µÍƳöÓ¦¸ÃÔÚÆÁÄ»ÉÏµÄÆ½ÒÆÁ¿¡£
this.unprojectPan
= function(deltaVector, moveDown) {
// var getProjectLength()
var element = scope.domElement === document
? scope.domElement.body : scope.domElement;
var cxv = new Vector3(0, 0, 0).setFromMatrixColumn(scope.object.matrix,
0);
// Ïà»úxÖá
var cyv = new Vector3(0, 0, 0).setFromMatrixColumn(scope.object.matrix,
1);
// Ïà»úyÖá
// Ïà»úÖá¶¼Êǵ¥Î»ÏòÁ¿
var pxl = deltaVector.dot(cxv)/* / cxv.length()*/;
var pyl = deltaVector.dot(cyv)/* / cyv.length()*/;
// ÏòÁ¿ÔÚÏà»úyÖáµÄͶӰ
// offset=dx * vector(cx) + dy * vector(cy.project(xoz).normalize)
// offsetÓÉÏà»úxÖá·½ÏòÏòÁ¿+Ïà»úyÖáÏòÁ¿ÔÚxozÆ½ÃæµÄ
ͶӰ×é³É
var dv = deltaVector.clone();
dv.sub(cxv.multiplyScalar(pxl));
pyl = dv.length();
if ( scope.object instanceof PerspectiveCamera
) {
// perspective
var position = scope.object.position;
var offset = new Vector3(0, 0, 0);
offset.copy(position).sub(scope.target);
var distance = offset.length();
distance *= Math.tan(scope.object.fov / 2 *
Math.PI / 180);
// var xd = 2 * distance * deltaX / element
.clientHeight;
// var yd = 2 * distance * deltaY / element
.clientHeight;
// panLeft( xd, scope.object.matrix );
// panUp( yd, scope.object.matrix );
var deltaX = pxl * element.clientHeight /
(2 * distance);
var deltaY = pyl * element.clientHeight /
(2 * distance) *
(moveDown ? -1 : 1);
return [deltaX, deltaY];
} else if ( scope.object instanceof Orthogra
phicCamera ) {
// orthographic
// panLeft( deltaX * ( scope.object.right -
scope.object.left
) / scope.object.zoom /
element.clientWidth,
scope.object.matrix );
// panUp( deltaY * ( scope.object.top - scope
.object.bottom )
/ scope.object.zoom / element
.clientHeight, scope.object.matrix
);
var deltaX = pxl * element.clientWidth * scope.
object.zoom / (scope.object.right
- scope.object
.left);
var deltaY = pyl * element.clientHeight * scope.
object.zoom / (scope.object.top
- scope.object.
bottom);
return [deltaX, deltaY];
} else {
// camera neither orthographic nor perspective
console.warn( 'WARNING: OrbitControls.js encountered
an unknown camera
type - pan disabled.' );
}
} |
7¡¢2/3DÇл»
23DÇл»µÄÖ÷ÒªÄÚÈݾÍÊǵ±Ïà»úµÄÊÓÏßÖáÓ볡¾°µÄÆ½Ãæ´¹Ö±Ê±£¬Ê¹ÓÃÆ½ÐÐͶӰ£¬ÕâÑùÓû§Ö»ÄÜ¿´µ½¶¥Ãæ¸øÈ˵ĸоõ¾ÍÊÇ2DÊÓͼ¡£ËùÒÔÒª¸ù¾Ý͸ÊÓµÄÊÓ×¶Ì弯Ëã³öƽÐÐͶӰµÄÊÀ¾°Ìå¡£

ÒòΪÓû§»áÔÚ2D¡¢3D³¡¾°ÏÂ×öºÜ¶à²Ù×÷£¬±ÈÈçÆ½ÒÆ¡¢Ëõ·Å¡¢Ðýת£¬ÒªÏëÎÞ·ìÇл»£¬Õâ¸ö¹Ø¼üÔÚÓÚ½«Æ½ÐÐͶӰÓëÊÓ×¶ÌåÏà»úµÄλÖá¢lookAt·½Ê½±£³ÖÒ»ÖÂ;ÒÔ¼°½«ËûÃÇ·Å´óËõСµÄ¹Ø¼üµã£ºdistanceµÄ±ÈÀýÓëzoomÀ´±£³ÖÒ»Ö¡£
ƽÐÐͶӰÖУ¬zoomÔ½´ó´ú±íÁùÃæÌåµÄÊ×βÁ½¸ö̾̾»ýԽС£¬·Å´óÔ½´ó¡£

8¡¢3DÖеØÀí¼¶±ð
µØÀí¼¶±ðʵ¼ÊÊÇÏñËØ¸úÄ«¿¨ÍÐ×ø±êϵÏÂÃ׵ĶÔÓ¦¹ØÏµ£¬Õâ¸öÓÐͨÓõıê×¼ÒÔ¼°¼ÆË㹫ʽ£º
r=6378137
resolution=2*PI*r/(2^zoom*256) |
¸÷¸ö¼¶±ðÖÐÏñËØÓëÃ׵ĶÔÓ¦¹ØÏµÈçÏ£º
resolution
zoom 2048 blocksize 256 blocksize scale(dpi=160)
156543.0339 0 320600133.5 40075016.69 986097851.5
78271.51696 1 160300066.7 20037508.34 493048925.8
39135.75848 2 80150033.37 10018754.17 246524462.9
19567.87924 3 40075016.69 5009377.086 123262231.4
9783.939621 4 20037508.34 2504688.543 61631115.72
4891.96981 5 10018754.17 1252344.271 30815557.86
2445.984905 6 5009377.086 626172.1357 15407778.93
1222.992453 7 2504688.543 313086.0679 7703889.465
611.4962263 8 1252344.271 156543.0339 3851944.732
305.7481131 9 626172.1357 78271.51696 1925972.366
152.8740566 10 313086.0679 39135.75848 962986.1831
76.4370283 11 156543.0339 19567.87924 481493.0916
38.2185141 12 78271.51696 9783.939621 240746.5458
19.1092571 13 39135.75848 4891.96981 120373.2729
9.5546285 14 19567.87924 2445.984905 60186.63645
4.7773143 15 9783.939621 1222.992453 30093.31822
2.3886571 16 4891.96981 611.4962263 15046.65911
1.1943286 17 2445.984905 305.7481131 7523.329556
0.5971643 18 1222.992453 152.8740566 3761.664778
0.2985821 19 611.4962263 76.43702829 1880.832389
0.1492911 20 305.7481131 38.21851414 940.4161945
0.0746455 21
0.0373227 22 |
3DÖеļÆËã²ßÂÔÊÇ£¬Ê×ÏÈÐèÒª½«3DÊÀ½çÖеÄ×ø±êÓëÄ«¿¨Íе¥Î»µÄ¶ÔÓ¦¹ØÏµ¸ãÇå³þ£¬Èç¹ûÒѾÊÇÒÔmiÀ´×öµ¥Î»£¬ÄÇô¾Í¿ÉÒÔÖ±½Ó½«Ïà»úµÄͶӰÆÁÄ»µÄ¸ß¶ÈÓëÆÁÄ»µÄÏñËØÊýÄ¿×ö±ÈÖµ£¬µÃ³öµÄ½á¹û¸úÉÏÃæµÄranking×ö±È½Ï£¬Ñ¡Ôñ²»Óõļ¶±ðÊý¾ÝÒÔ¼°±ÈÀý³ß¡£×¢Òâ3DµØÍ¼ÖеıÈÀý³ß²¢²»ÊÇÔÚËùÓÐÆÁÄ»ÉϵÄËùÓÐλÖÃÓëÏÖʵÊÀ½ç¶¼Âú×ãÕâ¸ö±ÈÀý³ß£¬Ö»ÄÜ˵ÊÇÏà»úÖÐÐĵãÔÚÆÁĻλÖô¦µÄÏñËØÊÇÂú×ãÕâ¸ö¹ØÏµµÄ£¬ÒòΪƽÐÐͶӰÓнü´óԶСµÄЧ¹û¡£
9¡¢poiÅöײ
ÓÉÓÚ±ê×¢ÊÇÓÀÔ¶³¯×ÅÏà»úµÄ£¬ËùÒÔ±ê×¢µÄÅöײ¾ÍÊǰѱê×¢µãת»»µ½ÆÁÄ»×ø±êϵÓÿí¸ßÀ´¼ÆËã¾ØÐÎÏཻÎÊÌâ¡£ÖÁÓÚ¾ßÌåµÄÅöײËã·¨£¬´ó¼Ò¿ÉÒÔÔÚÍøÉÏÕÒµ½£¬ÕâÀï²»Õ¹¿ª¡£ÏÂÃæÊǼÆËãpoi¾ØÐεĴúÂë
|