google地图测距原码

article/2025/9/18 15:18:25

http://hi.baidu.com/shirdrn/blog/item/a7204afc716641fbfc037f85.html

 

 

Google Maps自带实例多点测距尺实现的功能就是可以根据用户标出的任意多点,从而返回计算得到的各个点之间的距离。也就是说,计算出了一条折线的长度——是在地理上的实际距离。

实例代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google 地图 API 示例 - 多点测距尺</title>
<script src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAUbR6g0RGGvD3wc8nEOCNZhQ1-r6OYR-mHk-jCzYLxV7O5V1vkBR9GY27V0NNKkh2ASTbqJMDYJeu2A"
    type="text/javascript"></script>

<!-- 包含自定义控件的源文件。引入GRulerControl控件。 -->
<script src="ruler.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[

// Copyright 2007 Google Inc.
// All Rights Reserved.

/**
   * 这个例子演示了 Google 地图 API 的以下功能:
   *   * 使用自定义控件
   *
   * 注意:为了在 IE6 中正常显示折线,必须在网页的 <HTML> 标签中加上:
   *   <html xmlns:v="urn:schemas-microsoft-com:vml">
   *
   * @author haogang
   */

/**
   * 创建地图控件,并添加一些基本的控件
   */

function load() {

    if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById('map'));
     
      // 给地图添加内置的控件,分别为:
      // 平移及缩放控件(左上角)、比例尺控件(左下角)、缩略图控件(右下角)
      map.addControl(new GLargeMapControl());
      map.addControl(new GScaleControl());
      map.addControl(new GOverviewMapControl());
     
      // 添加自定义的控件
      map.addControl(new GRulerControl());

      // 将视图移到自己定义的位置
      map.setCenter(new GLatLng(43.832, 125.322), 14);
    }
}

//]]>
</script>
</head>
<body οnlοad="load()" οnunlοad="GUnload()">
    <div id="intro" style="width: 700px;">
    <p><b>提示: </b>单击地图添加多个标记,设定您的路径。您还可以随意地修改现有路径。试试看在已有的标记上单击,或者拖拽它们!</p>
    </div>
    <div id="map" style="width: 700px; height: 500px;"></div>
</body>
</html>

运行代码后的地图视图如图所示:

 

从代码可以看到似乎实现比较容易,不过就是向创建的地图中添加一系列控件:

var map = new GMap2(document.getElementById('map'));
     
     // 给地图添加内置的控件,分别为:
      // 平移及缩放控件(左上角)、比例尺控件(左下角)、缩略图控件(右下角)
      map.addControl(new GLargeMapControl());
      map.addControl(new GScaleControl());
      map.addControl(new GOverviewMapControl());
     
      // 添加自定义的控件
      map.addControl(new GRulerControl());

      // 将视图移到自己定义的位置
      map.setCenter(new GLatLng(43.832, 125.322), 14);

GLargeMapControl、GScaleControl、GOverviewMapControl、GRulerControl,其中,GRulerControl控件是一个自定义控件。

实际上,这个实例的经典之处在于一个GRulerControl控件的实现,可以从引入的ruler.js文件中看到实现过程,代码如下:

/**
* 这个例子演示了 Google 地图 API 的以下功能:
*   * 可拖拽的标记
*   * 在地图上叠加折线
*   * 计算地理距离
*   * 事件处理(单击、拖拽)
*   * 信息窗口
*   * 利用链表维护各种对象
*   * 自定义控件
*
* 注意:为了在 IE6 中正常显示折线,必须在网页的 <HTML> 标签中加上:
*   <html xmlns:v="urn:schemas-microsoft-com:vml">
*
* @author haogang
*/

/**
* 本示例用一个双向链表维护用户设定的标记,能够容易的实现标记的遍历和删除
* 每个链表结点 m 有如下字段:
*    m.prev      前驱标记
*    m.next      后继标记
*    m.segPrev   连接本标记与前驱标记的线段
*    m.segNext   连接本标记与后继标记的线段
*/

function GRulerControl() {
var me = this;

// 可国际化的字符串
me.RESET_BUTTON_TITLE_ = '清除所有测距标记';
me.ENABLE_BUTTON_TITLE_ = '添加测距标记已启用,单击这里禁用';
me.DISABLE_BUTTON_TITLE_ = '添加测距标记已禁用,单击这里启用';
me.DELETE_BUTTON_TITLE_ = '删除';

me.RESET_BUTTON_IMAGE_ = 'images/ruler_clear.png';
me.ENABLE_BUTTON_IMAGE_ = 'images/ruler_enabled.png';
me.DISABLE_BUTTON_IMAGE_ = 'images/ruler_disabled.png';
me.BACKGROUND_IMAGE_ = 'images/ruler_background.png'

me.KILOMETER_ = '公里';
me.METER_ = '米';
}

GRulerControl.prototype = new GControl();

/**
* 初始化标尺控件
*/

GRulerControl.prototype.initialize = function(map) {
var me = this;
var container = document.createElement('div');
me.setButtonStyle_(container);

// “启用/禁用”按钮
var btnEnable = document.createElement('img');
btnEnable.width = btnEnable.height = 19;
GEvent.addDomListener(btnEnable, 'click',
    function() {
      me.setEnabled(!me.isEnabled());
    }
);
container.appendChild(btnEnable);

// “重置”按钮
var btnReset = document.createElement('img');
btnReset.width = btnReset.height = 19;
btnReset.src = me.RESET_BUTTON_IMAGE_;
btnReset.title = me.RESET_BUTTON_TITLE_;
GEvent.addDomListener(btnReset, 'click',
    function() {
      me.reset();
    }
);
container.appendChild(btnReset);

// 距离标签
var txtInfo = document.createElement('div');
txtInfo.style.font = 'small Arial';
txtInfo.style.fontWeight = 'bold';
txtInfo.style.fontSize = '9pt';
txtInfo.style.width = '82px';
container.appendChild(txtInfo);

// 初始化内部变量
map.rulerControl_ = me;
me.map_ = map;
me.head_ = new Object();
me.tail_ = new Object();
me.head_.next_ = me.tail_;
me.tail_.prev_ = me.head_;
me.btnEnable_ = btnEnable;
me.btnReset_ = btnReset;
me.txtInfo_ = txtInfo;
me.setEnabled(true);

map.getContainer().appendChild(container);
return container;
}


/**
* 设置控件的格式
*/

GRulerControl.prototype.setButtonStyle_ = function(button) {
button.style.backgroundImage = 'url(' + this.BACKGROUND_IMAGE_ + ')';
button.style.font = 'small Arial';
button.style.border = '1px solid #888888';
button.style.padding = '4px';
button.style.textAlign = 'right';
button.style.cursor = 'pointer';
}

/**
* 用恰当的格式表示距离
*/
GRulerControl.prototype.formatDistance_ = function(len) {
var me = this;

len = Math.round(len);
if (len <= 1000) {
    return len + ' ' + me.METER_;
} else if (len <= 1000000) {
    return len / 1000 + ' ' + me.KILOMETER_;
}
return Math.round(len / 1000) + ' ' + me.KILOMETER_;
}

/**
* 格式化角度为字符串
*/

GRulerControl.prototype.formatDegree_ = function(value) {
value = Math.abs(value);
var v1 = Math.floor(value);
var v2 = Math.floor((value - v1) * 60);
var v3 = Math.round((value - v1) * 3600 % 60);
return v1 + '°' + v2 + '/'' + v3 + '"';
}

/**
* 格式化经纬度为字符串
*/

GRulerControl.prototype.formatLatLng_ = function(pt) {
var me = this;

var latName, lngName;
var lat = pt.lat();
var lng = pt.lng();
latName = lat >= 0 ? '北纬' : '南纬';
lngName = lng >= 0 ? '东经' : '西经';

return lngName + me.formatDegree_(lng) + ','
    + latName + me.formatDegree_(lat);
}

/**
* 返回控件的默认位置
*/
GRulerControl.prototype.getDefaultPosition = function() {
return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(8, 8));
}

/**
* 返回控件是否已启用
*/

GRulerControl.prototype.isEnabled = function() {
return this.enabled_;
}

/**
* 设置控件的“启用/禁用"状态
*/

GRulerControl.prototype.setEnabled = function(value) {
var me = this;
if (value == me.enabled_)
    return;
me.enabled_ = value;

if (me.enabled_) {
    me.mapClickHandle_ = GEvent.addListener(me.map_, 'click', me.onMapClick_);
    me.txtInfo_.style.display = 'block';
    me.btnReset_.style.display = 'inline';
    me.btnEnable_.src = me.ENABLE_BUTTON_IMAGE_;
    me.btnEnable_.title = me.ENABLE_BUTTON_TITLE_;
    me.updateDistance_();
} else {
    GEvent.removeListener(me.mapClickHandle_);
    me.txtInfo_.style.display = 'none';
    me.btnReset_.style.display = 'none';
    me.btnEnable_.src = me.DISABLE_BUTTON_IMAGE_;
    me.btnEnable_.title = me.DISABLE_BUTTON_TITLE_;
}
}

/**
* 事件处理函数:当用户单击地图时,要在该位置添加一个标记
*/

GRulerControl.prototype.onMapClick_ = function(marker, latlng) {
var me = this.rulerControl_;

// 如果用户单击的是标记,不再这里处理
if (marker)
    return;

// 创建标记,并添加到链表中
var newMarker = new GMarker(latlng, {draggable: true});

var pos = me.tail_.prev_;
newMarker.prev_ = pos;
newMarker.next_ = pos.next_;
pos.next_.prev_ = newMarker;
pos.next_ = newMarker;

// 为标记添加事件处理函数:拖拽标记时要更新连接线段和距离
GEvent.addListener(newMarker, 'dragend',
    function() {
      me.map_.closeInfoWindow();
      me.updateSegments_(newMarker);
      me.updateDistance_();
    }
);
// 为标记添加事件处理函数:单击标记时要显示信息窗口
GEvent.addListener(newMarker, 'click',
    function() {
      newMarker.openInfoWindow(me.createInfoWindow_(newMarker));
    }
);

// 将创建的标记添加到地图中
me.map_.addOverlay(newMarker);

if (newMarker.prev_ != me.head_) {
    // 如果这不是第一个标记,则创建连接到上一个标记的线段,并显示在地图中
    var segment = [newMarker.prev_.getLatLng(), latlng];
    newMarker.segPrev_ = new GPolyline(segment);
    newMarker.prev_.segNext_ = newMarker.segPrev_;
    me.map_.addOverlay(newMarker.segPrev_);

    // 更新距离显示
    me.updateDistance_();
}
}

/**
* 统计总距离,并显示在网页中
*/

GRulerControl.prototype.updateDistance_ = function() {
var me = this;
var len = me.getDistance();

// 结果显示在网页中
me.txtInfo_.innerHTML = me.formatDistance_(len);
}

/**
* 遍历链表,统计总距离
*/

GRulerControl.prototype.getDistance = function() {
var me = this;
var len = 0;

// 周游链表,累计相邻两个标记间的距离
for (var m = me.head_; m != me.tail_; m = m.next_) {
    if (m.prev_ && m.prev_.getLatLng)
      len += m.prev_.getLatLng().distanceFrom(m.getLatLng());
}
return len;
}

/**
* 清除所有标记,初始化链表
*/

GRulerControl.prototype.reset = function() {
var me = this;

for (var m = me.head_.next_; m != me.tail_; m = m.next_) {
    me.map_.removeOverlay(m);
    if (m.segNext_)
      me.map_.removeOverlay(m.segNext_);
}
me.head_ = new Object();
me.tail_ = new Object();
me.head_.next_ = me.tail_;
me.tail_.prev_ = me.head_;

me.updateDistance_();
}


/**
* 事件处理函数:当用户拖拽标记、标记坐标改变时被调用,这里要更新与该标记连接的线段
* @param {GMarker} marker 被拖拽的标记
*/
GRulerControl.prototype.updateSegments_ = function(marker) {
var me = this;
var segment;

// 更新连接前驱的线段
if (marker.segPrev_ && marker.prev_.getLatLng) {
    // 从地图上删除旧的线段
    me.map_.removeOverlay(marker.segPrev_);
   
    // 根据标记的当前坐标构造新的线段,并更新链表结点的相关字段
    segment = [marker.prev_.getLatLng(), marker.getLatLng()];
    marker.segPrev_ = new GPolyline(segment);
    marker.prev_.segNext_ = marker.segPrev_;
   
    // 将新线段添加到地图中
    me.map_.addOverlay(marker.segPrev_);
}

// 更新连接后继的线段,与上类似
if (marker.segNext_ && marker.next_.getLatLng) {
    me.map_.removeOverlay(marker.segNext_);
    segment = [marker.getLatLng(), marker.next_.getLatLng()];
    marker.segNext_ = new GPolyline(segment);
    marker.next_.segPrev_ = marker.segNext_;
    me.map_.addOverlay(marker.segNext_);
}
}


/**
* 为信息窗口创建 DOM 对象,包括标记的坐标和“删除”按钮
* @param {GMarker} marker 对应的标记
*/

GRulerControl.prototype.createInfoWindow_ = function(marker) {
var me = this;

// 为气泡提示窗口创建动态 DOM 对象,这里我们用 DIV 标签
var div = document.createElement('div');
div.style.fontSize = '10.5pt';
div.style.width = '250px';
div.appendChild(
    document.createTextNode(me.formatLatLng_(marker.getLatLng())));
   
var hr = document.createElement('hr');
hr.style.border = 'solid 1px #cccccc';
div.appendChild(hr);

// 创建“删除”按钮
var lnk = document.createElement('div');
lnk.innerHTML = me.DELETE_BUTTON_TITLE_;
lnk.style.color = '#0000cc';
lnk.style.cursor = 'pointer';
lnk.style.textDecoration = 'underline';

// 为“删除”按钮添加事件处理:调用 removePoint() 并重新计算距离
lnk.onclick =
    function() {
      me.map_.closeInfoWindow();
      me.removePoint_(marker);
      me.updateDistance_();
    };
div.appendChild(lnk);

// 当用户关闭信息窗口时 Google 地图 API 会自动释放该对象
return div;
}


/**
* 事件处理函数:当用户选择删除标记时被调用,这里要删除与该标记连接的线段
* @param {GMarker} marker 要删除的标记
*/
GRulerControl.prototype.removePoint_ = function(marker) {
var me = this;

// 先从地图上删除该标记
me.map_.removeOverlay(marker);

// 对于中间结点,还要把它的前驱和后继用线段连接起来
if (marker.prev_.getLatLng && marker.next_.getLatLng) {
    var segment = [marker.prev_.getLatLng(), marker.next_.getLatLng()];
    var polyline = new GPolyline(segment);
    marker.prev_.segNext_ = polyline;
    marker.next_.segPrev_ = polyline;
    me.map_.addOverlay(polyline);
}
marker.prev_.next_ = marker.next_;
marker.next_.prev_ = marker.prev_;

if (marker.segPrev_)
    me.map_.removeOverlay(marker.segPrev_);
if (marker.segNext_)
    me.map_.removeOverlay(marker.segNext_);
}

我们主要是学实例的实现思想,只要掌握了它的设计思想,才能够编写出我们需要的更好的Google Maps控件。

看一下GRulerControl控件的结构,将GRulerControl控件类的属性和方法拿出来:

   function GRulerControl() {
    var me = this;
   
   // 可国际化的字符串
    me.RESET_BUTTON_TITLE_ = '清除所有测距标记';
    me.ENABLE_BUTTON_TITLE_ = '添加测距标记已启用,单击这里禁用';
    me.DISABLE_BUTTON_TITLE_ = '添加测距标记已禁用,单击这里启用';
    me.DELETE_BUTTON_TITLE_ = '删除';

    me.RESET_BUTTON_IMAGE_ = 'images/ruler_clear.png';
    me.ENABLE_BUTTON_IMAGE_ = 'images/ruler_enabled.png';
    me.DISABLE_BUTTON_IMAGE_ = 'images/ruler_disabled.png';
    me.BACKGROUND_IMAGE_ = 'images/ruler_background.png'

    me.KILOMETER_ = '公里';
    me.METER_ = '米';
}
GRulerControl.prototype = new GControl(); // 编写的任何控件应该实现GControl控件接口(或者说继承自GControl类)。
// GRulerControl控件的可用行为(类的成员方法)
GRulerControl.prototype.initialize = function(map) {...}; // 初始化标尺控件,主要是初始化标尺内具有的其它部件,以及定义链表。
GRulerControl.prototype.setButtonStyle_ = function(button) {...}; // 设置标尺上按钮的样式,按钮为图片按钮。
GRulerControl.prototype.formatDistance_ = function(len) (...); // 格式化数据。因为获取到的经纬度坐标值都是精度很高的浮点数,计算转化为容易读取的常规距离数值,例如单位是公里。
GRulerControl.prototype.formatDegree_ = function(value) {...}; // 格式化角度为字符串。
GRulerControl.prototype.formatLatLng_ = function(pt) {...}; // 格式化经纬度为字符串。
GRulerControl.prototype.getDefaultPosition = function() {...}; // 设置GRulerControl控件的默认位置,并返回GControlPosition对象。
GRulerControl.prototype.isEnabled = function() {...}; // 当前的GRulerControl控件是否可以使用。
GRulerControl.prototype.setEnabled = function(value) {...}; // 设置当前的GRulerControl控件为禁用/启用状态。
GRulerControl.prototype.onMapClick_ = function(marker, latlng) {...}; // 事件处理:当鼠标点击地图,在该点添加一个标记(GMarker)。
GRulerControl.prototype.updateDistance_ = function() {...}; // 即时刷新地图,计算总的距离,并在地图上显示出来。
GRulerControl.prototype.getDistance = function() {...); // 计算折线表示的总距离。
GRulerControl.prototype.reset = function() {...}; // 清除当前地图上显示的所有标记(GMarker),并且初始化(重置)链表。
GRulerControl.prototype.updateSegments_ = function(marker) {...}; // 事件处理函数:当用户拖拽标记、标记坐标改变时被调用,这里要更新与该标记连接的线段。
GRulerControl.prototype.createInfoWindow_ = function(marker) {...}; // 为信息窗口创建 DOM 对象,包括标记的坐标和“删除”按钮。
GRulerControl.prototype.removePoint_ = function(marker) {...}; // 事件处理函数:当用户选择删除标记时被调用,这里要删除与该标记连接的线段

现在来看,就一目了然了,你可以通过运行程序,作为前端用户,体验一下,如图所示:

而且,还可以选择删除指定的已经添加的标记,如图所示:

例如删除指定的那个标记以后,地图变成:

还可以根据需要,拖动已经添加到地图上的任意标记,来适当调整它的所在位置。

根据在地图上的操作来总结该实例的功能,然后对照这些方法名列表,思考一下如果让我们自己来些,你会如何实现。

说一下,该实例中用到的数据结构:双向链表。


http://chatgpt.dhexx.cn/article/QjC1VQwH.shtml

相关文章

ArcGIS API For Javascript 4.15 绘制地图:在地图上测距离、测面积和在不同图层上搜索

1、HTML 页面 ## index.html<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>第七讲-小部件</tit…

百度离线地图示例之二:测距

前言介绍&#xff1a; 主要是基于v3.0的API版本进行的离线&#xff0c;纯内网可操作&#xff0c;基本上实现了现有90%以上的功能点&#xff0c;能兼容jpg和png格式的瓦片图层&#xff0c;实现了原生和基于Vue两个版本&#xff08;包含常用的55个示例&#xff09;&#xff0c;文…

距离测度

欧氏距离测度&#xff08;EuclideanDistanceMeasure&#xff09; 也称欧几里得距离&#xff0c;在一个N维度的空间里&#xff0c;求两个点的距离&#xff0c;这个距离肯定是一个大于等于零的数字&#xff0c;那么这个距离需要用两个点在各自维度上的坐标相减&#xff0c;平方后…

测量地图距离

1&#xff1a;首先新建矢量图层&#xff0c;用来显示坐标点等&#xff1a; lineLayer new SuperMap.Layer.Vector(“lineLayer”); polygonLayer newSuperMap.Layer.Vector(“polygonLayer”); Jia_markers new SuperMap.Layer.Markers(“Jia_markers”); 然后设置一下图层…

高德地图(第二篇)测量距离小工具

实现如下图一样的小工具 操作说明&#xff1a; 1.在地图上长按选点&#xff0c;第一个点添加起点marker,底部导航点为红色表示正在编辑 2.连续选点会弹出气泡计算总距离&#xff0c;底部导航点为红色表示正在编辑 3.点击气泡内垃圾桶会删除当前点,回退到上次内容. 4.点击红…

谷歌地图怎么测距

您可以使用“距离测量工具”轻松计算从 Google 地图上的一个地点到另一地点的距离。 要完成此操作&#xff0c;请执行以下步骤&#xff1a; 访问 maps.google.com。 点击左侧面板底部的 Google 地图实验室链接。 启用距离测量工具。 点击保存更改。 点击地图左下角…

GIS 测距离操作

开发工具与关键技术: SuperMap iDesktop 9D GIS 作者:杨泽平 撰写时间:2020、5、20GIS测距离是通过调用发布在isever服务器上的地图进行的基础操作,他主要是根据地图比例尺在地图中取一个点绘制一条线再通过计算得出他的实际距离,这主要方便得出两地之间的实际距离。 详细…

Win11安装及部署hexo

1、 在本地安装hexo框架 1.1 安装git 下载链接&#xff1a;Git - Downloads (git-scm.com) 安装教程&#xff1a;Git 安装配置 | 菜鸟教程 (runoob.com) 1.2 安装Nodejs 下载链接&#xff1a;下载 | Node.js 中文网 (nodejs.cn) 安装教程&#xff1a;Node.js 安装配置 | …

win10 mbr下装linux,(MBR模式)Win10下安装Ubuntu18.04双系统

1.制作U盘启动工具。 2.删除一个磁盘&#xff0c;不格式化(我删除了200G的磁盘)。 3.启动电脑&#xff0c;按F12进入启动选项&#xff0c;选择U盘启动&#xff0c;安装Ubuntu18.04系统。 4.进入启动界面&#xff0c;选择try ubuntu试用&#xff0c;不要选择立即安装。因为试用时…

win10安装torch

最近由于搞风格迁移&#xff0c;于是去https://github.com/FlyingGoblin/CartoonGAN下载了工程&#xff0c;结果一看&#xff0c;需要安装torch 从作者提供的链接https://github.com/torch/distro进去 把工程clone下来&#xff0c;我放到了D:\torch&#xff0c; 同时注意到在wi…

win2008服务器虚拟内存设置,电脑虚拟内存设置(Win 7/8/10、Windows Server 2003 - 2019)...

一般来说&#xff0c;个人电脑不用设置虚拟内存&#xff0c;现在内存都比较大(一般的 4G、稍微好点的 8G&#xff0c;更好的 16G以上)&#xff0c;这么高的内存已经足够使用。服务器不一样&#xff0c;一方面服务器会随着内存的升高&#xff0c;价格明显升高&#xff1b;另一方…

win10 jungo windriver

目录 前言 1、安装windriver 1.1、disable Secure Boot 1.2、digital driver signing enforcement 2、FPGA 逻辑下载及PCIE驱动安装 2、PCIE PIO通信测试 3、PCIE DMA通信测试 3.1、vs打开BMD工程 3.2、流程演示 3.3、VS2015 PCIE DMA驱动调试程序 3.4、DMA板卡测试…

win10 安装 Phoenix

文章目录 一、前置要求二、安装 Phoenix 一、前置要求 需要 Erlang 18 或更高版本需要 Elixir 1.5 或更高版本需要 Node.js 5.0.0 或更高版本 注意&#xff1a;Phoenix 默认使用 PostgreSQL 作为数据库 &#xff0c;可以在创建新应用时通过参数 --database mysql 来切换到 MyS…

运行win7计算机需要多长时间,WIN7电脑运行太慢怎么解决

windows系统使用时间越长,系统越臃肿,速度也越来越慢&#xff0c;那么WIN7电脑运行太慢怎么解决呢?今天学习啦小编与大家分享下解决WIN7电脑运行太慢的具体操作步骤&#xff0c;有需要的朋友不妨了解下。 WIN7电脑运行太慢解决方法一 win7系统运行太慢一般有以下几个原因&…

win7硬件要求_九代酷睿平台装Win7的方法!2019年九代i5-9400F配B365装机配置单

九代酷睿平台可以装win7吗?理论上九代平台的主板都是不能安装Win7系统的,当然有九代酷睿平台装Win7的方法,不过需要特定的主板可以安装的,就在近期intel发布了B365主板,支持Win7系统,不过需要搭载独立显卡才可以支持,支持核显装机平台。下面装机之家分享一套针对2019年的…

win10安装Ubuntu16.04

第一次安装双系统&#xff0c;踩了不少坑&#xff0c;花了两三天才装好&#xff0c;因为电脑的不同&#xff08;本人电脑联想小新i5&#xff09;&#xff0c;网上那些安装过程有些不适用&#xff0c;所以花了好长时间&#xff0c;甚至差点决定去重装系统了&#xff0c;为了以后…

HD2500显卡驱动linux,Intel发布HD Graphics 2500/4000显卡Win10驱动下载

IT之家讯 Intel发布了用于第三代CPU核心显卡HD Graphics 2500/4000的新版Win7/Win8.1/Win10驱动程序&#xff0c;版本号为15.33.39.4276&#xff0c;本次更新最大特点就是加入了对Win10的支持。但需要注意的是&#xff0c;Windows10系统安装该驱动过程中会提示“驱动程序未签名…

华硕u4000u 重装window7 重装win7 重装window10 重装win10 重装系统 戴尔 联想 鸿基 重装系统远程协助

很多人都会遇到华硕U4000或者U4000&#xff0c;window10降级成window7&#xff0c;各种ghost原版镜像都无法安装的问题。 下面就是解决步骤。 可以先参考博客&#xff1a;https://blog.csdn.net/jessical1020/article/details/64906925 boot设置 1&#xff0e;F2进入boot&a…

福利来了!手把手教你Python爬取女神套图

疲惫的生活里总要有些温柔梦想吧 目标URL&#xff1a;http://www.win4000.com/meinvtag4_1.html 爬取美桌网某个标签下的美女壁纸&#xff0c;点进详情页可以发现&#xff0c;里面是一组套图 一、网页分析 翻页查看 URL 变化规律&#xff1a; http://www.win4000.com/meinvt…

小新V4000 UEFI装WIN7系统

2.8、【保存更改】——》点【是】 2.9、然后在ESP分区点击【指派新的驱动器号&#xff08;盘符&#xff09;】 2.10、指派盘符之后&#xff0c;可看到ESP分区容量为空&#xff0c;指派的盘符是F盘 3、拷贝下载win7 旗舰版GHO文件进去。如果是虚拟机&#xff0c;你可以关闭虚拟机…