关于ArcGis for javascript的使用
1.引用ArcGis for javascript核心类库的两种方式:
1.1.下载js包,解压缩放入项目中
1.1.1.下载核心类库压缩文件, 下载地址: https://developers.arcgis.com/downloads/
1.1.2.将下载好的文件解压缩放入项目
1.1.3.更改核心类库中的相关文件中的路径
1> 更改 ../arcgis_js_api/library/3.22/3.22/init.js 与 ../arcgis_js_api/library/3.22/3.22/dojo/dojo.js 文件
2> 将 "https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo" 改为 "http://ip:port/项目路径/arcgis_js_api/library/3.22/3.22/dojo/dojo"
1.2.引用在线js类库
// Reference the JavaScript API from our CDN and you are ready to get started:
<link rel="stylesheet" href="https://js.arcgis.com/3.23/esri/css/esri.css">
3 <script src="https://js.arcgis.com/3.23/"></script>
2.创建MAP实例
2.1.创建一个div存放地图
<div id="myMap"></div>
2.2.使用dojo引入地图所需要的工具类,例如:
dojo.require('esri.layers.WebTiledLayer'); // 加载天地图
dojo.require('dojo.parser');
dojo.require('esri.request');
dojo.require('dojo.domReady!');
dojo.require('esri.layers.FeatureLayer');
dojo.require('esri.layers.GraphicsLayer');
dojo.require('esri.toolbars.navigation');
dojo.require('esri.dijit.OverviewMap');
dojo.require('esri.toolbars.draw');
dojo.require('esri.tasks.query');
dojo.require('esri.dijit.Scalebar');
dojo.require('dijit.dijit');
dojo.require('dijit.form.Button');
dojo.require('dijit.Toolbar');
dojo.require('dijit.layout.BorderContainer');
dojo.require('dijit.layout.ContentPane');
dojo.require('dijit.layout.AccordionContainer');
dojo.require('dojo.date.locale');
dojo.require('dojo.dom-style');
2.3.调用mapInit函数初始化地图
dojo.ready(mapInit); // 初始化地图
2.4.在mapInit函数中处理地图的事件
2.4.1:初始化地图范围方式一:
function mapInit() {
// 初始化范围设置
startExtent = new esri.geometry.Extent(mixX, mixY, maxX, maxY,
new esri.SpatialReference({wkid: 4490})
);
esri.config.defaults.map.sliderLabel = null;
map = new esri.Map("map", {
logo: false,
slider: false,
extent: startExtent
});
}
2.4.2.初始化地图范围方式二:
esri.config.defaults.map.sliderLabel = null;
map = new esri.Map('myMap', {
logo: false,
slider: false,
maxZoom: z,
spatialReference: {
wkid: 4490,
},
});
point = new esri.geometry.Point(x, y);
map.centerAndZoom(point, z);
2.4.3.初始化地图范围方式三:(推荐)
esri.config.defaults.map.sliderLabel = null;
map = new esri.Map("map", {
center : [ x, y ],
zoom : z,
logo : false,
spatialReference : {
"wkid" : 4326
}
});
2.5.引入地图(瓦片图层或数据图层)
2.5.1.引入瓦片图层:
<!-- 引入瓦片地图 -->
arcGISTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer(`http://ip:port/arcgis/rest/services/map/mapService/MapServer/`, {
id: 'arcGISTiledMapServiceLayer',
outFields: ['*'],
});
map.addLayers([arcGISTiledMapServiceLayer]);
2.5.2.引入在线缓存地图:
<!-- 引入缓存地图 -->
arcGISDynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer('http://ip:port/arcgis/rest/services/map/mapService/MapServer/', {
id: 'arcGISDynamicMapServiceLayer',
outFields: ['*'],
});
map.addLayers([arcGISDynamicMapServiceLayer]);
2.5.3.引入数据图层:
<!-- 引入数据图层 -->
featureLayer = new esri.layers.FeatureLayer("http://ip:port/arcgis/rest/services/map/mapService/MapServer/0", {
mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
id: "featureLayer",
outFields: ["*"]
});
map.addLayers([featureLayer]);
2.5.4.引入graphic图层
<!-- 引入graphic图层 -->
graphicLayer = new esri.layers.GraphicsLayer({
id: 'graphicLayer',
outFields: ['*'],
});
map.addLayers([graphicLayer]);
2.5.5.给地图设置比例尺
scalebar = new esri.dijit.Scalebar({
map, // 地图对象
attachTo: 'bottom-right', // 控件的位置,右下角
scalebarStyle: 'line', // line 比例尺样式类型
scalebarUnit: 'metric', // 显示地图的单位,这里是km
});
2.5.6.给地图上的图绑定事件
2.5.6.1.点击事件:
<!-- 给地图的底图或数据图层绑定点击事件 -->
dojo.connect(map, 'onClick', function() {
......
});
2.5.6.2.点击事件:
<!-- 给地图绑定当地图的比例尺被改变时事件 -->
dojo.connect(map, 'onZoomEnd', function() {
......
});
2.5.6.3.底图加载完成事件:
<!-- 当地图加载完后事件 -->
dojo.connect(map, 'onUpdateEnd', function() {
......
});
2.5.6.4.鼠标移入事件:
<!-- 鼠标移入事件 -->
dojo.connect(StreetLightsRtus, 'onMouseOver', function(evt) {
map.setMapCursor('pointer');
......
});
2.5.6.5.鼠标移出事件:
<!-- 鼠标移出事件 -->
dojo.connect(StreetLightsRtus, 'onMouseOut', function() {
map.setMapCursor('');
......
});
2.5.6.6.地图要素的框选
<!-- 引入相关依赖 -->
dojo.require('esri.toolbars.draw'); <!-- 加载框选工具Draw -->
map.onLoad = initToolbar(); <!-- 禁用框选工具Draw -->
draw.deactivate(); <!-- 框选 -->
function initToolbar() {
draw = new esri.toolbars.Draw(map);
// 当完成框选范围时,在范围内找到点
dojo.connect(draw, 'onDrawEnd', function() {
<!-- 找到范围内的graphic要素 -->
if (graphicLayer !== undefined) {
for (let i = 0; i < graphicLayer.graphics.length; i += 1) {
// 判断开关箱是否在框选范围
obj = graphicLayer.graphics[i];
if (obj.geometry !== undefined) {
if (obj.visible && extent.contains(obj.geometry)) {
rtuObjectArr.push(obj.attributes.id);
}
}
}
}
<!-- 找到范围内的feature要素 -->
if (featureLayer !== undefined) {
for (let i = 0; i < featureLayer.graphics.length; i += 1) {
// 判断开关箱是否在框选范围
obj = featureLayer.graphics[i];
if (obj.geometry !== undefined) {
if (obj.visible && extent.contains(obj.geometry)) {
rtuObjectArr.push(obj.attributes.id);
}
}
}
}
});
}
2.5.6.7.图层的显示与隐藏
2.5.6.7.1.图层的显示
arcGISTiledMapServiceLayer.show();
arcGISDynamicMapServiceLayer.show();
featureLayer.show();
graphicLayer.show();
2.5.6.7.2.图层的显示
arcGISTiledMapServiceLayer.hide();
arcGISDynamicMapServiceLayer.hide();
featureLayer.hide();
graphicLayer.hide();
2.6.graphicLayer图层数据的增`删`改
2.6.1.添加要素
<!-- 新增要素 -->
function mapAddGraphic() {
point = new esri.geometry.Point(x, y);
symbol = new esri.symbol.PictureMarkerSymbol("../../../xxx.png", 16, 16);
attributes = {
"id": 1,
"name":"新增测试"
}
graphic = new esri.Graphic(point, symbol, attributes);
graphicLayer.add(graphic);
}
2.6.2.更改要素
<!-- 更改要素 -->
function mapModifyGraphic() {
point = new esri.geometry.Point(x, y);
symbol = new esri.symbol.PictureMarkerSymbol("../../../xxx.png", 16, 16);
attributes = {
"id": 1,
"name":"更改测试"
}
graphic = new esri.Graphic(point, symbol, attributes);
for (let i = 0; i < graphicLayer.graphics.length; i += 1) {
if (graphicLayer.graphics[i].attributes.id === attributes.id) {
graphicLayer.remove(graphicLayer.graphics[i]);
}
}
graphicLayer.add(graphic);
}
2.6.3.删除要素
<!-- 删除要素 -->
function mapDeleteGraphic(graphic) {
for (let i = 0; i < graphicLayer.graphics.length; i += 1) {
if (graphicLayer.graphics[i].attributes.id === graphic.id) {
graphicLayer.remove(graphicLayer.graphics[i]);
}
}
}
2.7.featureLayer图层数据的增`删`改
featureLayer图层数据的增`删`改对应的要修改ArcGis Server端的数据,所以该featureLayer引用的数据链接在发布图层的时候必须开启Feature Access功能
2.7.1.添加要素
<!-- 1.引入dojo依赖 -->
dojo.require('esri.dijit.editing.Add'); <!-- 2.进行添加 -->
function mapAddFeature() {
featureLayer = new esri.layers.FeatureLayer(`${layerUrl}1`, {
mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
outFields: ['*'],
});
point = new esri.geometry.Point(x, y);
symbol = new esri.symbol.PictureMarkerSymbol("../../../xxx.png", 16, 16);
attributes = {
"id": 1,
"name":"新增测试"
}
graphic = new esri.Graphic(point, symbol, attributes);
RtuAdd = new esri.dijit.editing.Add({
featureLayer, // 给哪一个要素图层添加要素
addedGraphics: [graphic], // 用于添加的要素
});
// 执行添加函数
RtuAdd.performRedo();
featureLayer.refresh();
graphic.setSymbol(symbol);
featureLayer.add(graphic);
}
2.7.2.更改要素
<!-- 1.引入dojo依赖 -->
dojo.require('esri.dijit.editing.Update');
dojo.require('esri.tasks.query'); <!-- 2.进行更改 -->
function mapModifyFeature() {
featureLayer = new esri.layers.FeatureLayer(`${layerUrl}1`, {
mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
outFields: ['*'],
});
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ['*'];
query.where = `id=1`;
queryTask = new esri.tasks.QueryTask(`${layerUrl}`);
queryTask.execute(query, (results) => {
if (results.features.length > 0) {
oldGraphic = results.features[0];
point = new esri.geometry.Point(x, y);
symbol = new esri.symbol.PictureMarkerSymbol("../../../xxx.png", 16, 16);
newGraphic = new esri.Graphic(point, symbol, oldGraphic.attributes);
newGraphic.attributes.id = 1;
newGraphic.attributes.name = "更改测试";
newGraphic.attributes.x = x;
newGraphic.attributes.y = y;
RtuUpdate = new esri.dijit.editing.Update({
featureLayer,
postUpdatedGraphics: [newGraphic], // 修改之后的要素
preUpdatedGraphics: [oldGraphic], // 修改之前的要素
});
RtuUpdate.performRedo();
featureLayer.refresh();
for (let i = 0; i < graphicLayer.graphics.length; i += 1) {
if (graphicLayer.graphics[i].attributes.id === oldGraphic.id) {
graphicLayer.remove(graphicLayer.graphics[i]);
}
}
featureLayer.add(newGraphic);
} else {
mapAddFeature();
}
});
}
2.7.3.删除要素
<!-- 1.引入dojo依赖 -->
dojo.require('esri.dijit.editing.Delete');
dojo.require('esri.tasks.query'); <!-- 2.进行更改 -->
function mapDeleteLamp() {
featureLayer = new esri.layers.FeatureLayer(`${layerUrl}1`, {
mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
outFields: ['*'],
});
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ['*'];
query.where = `id=1`;
queryTask = new esri.tasks.QueryTask(`${layerUrl}`);
queryTask.execute(query, (results) => {
graphic = results.features[0];
RtuDelete = new esri.dijit.editing.Delete({
featureLayer,
deletedGraphics: [graphic],
});
RtuDelete.performRedo();
featureLayer.refresh();
for (let i = 0; i < featureLayer.graphics.length; i += 1) {
if (featureLayer.graphics[i].attributes.id === id) {
featureLayer.remove(featureLayer.graphics[i]);
}
}
});
}
3.1.根据经纬度数组在地图上画线
polylineJson = { "paths": [[[120.140524529883, 30.3270758041052], [120.140235682031, 30.3270525737175], [120.139817472998, 30.3270240400276], [120.139431404836, 30.3270008815856]]]};
xlPolyline = new esri.geometry.Polyline(polylineJson);
xlSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color('#00FF00'), 4);
xlGraphic = new esri.Graphic(xlPolyline, xlSymbol);
polylineLayer.add(xlGraphic);
3.2.跟据经纬度在地图上画圆
point = new esri.geometry.Point(x, y);
symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_CIRCLE, (r)),
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([255, 0, 0]), 0.1),
new dojo.Color([255, 0, 0, 0.6]));
graphic = new esri.Graphic(point, symbol, item);
schoolElectricityLayer.add(graphic);
3.3.根据经纬度数组在地图上画面
polygonJson ={
rings: [[
[120.193451, 30.283218], [120.194453, 30.263535], [120.165335, 30.264035], [120.161023, 30.278568],
[120.168414, 30.280866], [120.166471, 30.288568], [120.162369, 30.288824], [120.158991, 30.295311],
[120.172835, 30.300009], [120.16372, 30.314242], [120.164879, 30.317144], [120.192948, 30.352787],
[120.20639, 30.3569], [120.21079, 30.35175], [120.218307, 30.351427], [120.217978, 30.340206],
[120.209947, 30.336802], [120.209419, 30.328492], [120.203206, 30.327809], [120.213779, 30.326153],
[120.209763, 30.321596], [120.19666, 30.318027], [120.194544, 30.307804], [120.19983, 30.308465],
[120.191775, 30.295249], [120.193451, 30.283218]]],
spatialReference: {wkid: 4326}
}; polygon = new esri.geometry.Polygon(polygonJson);
symbol = new esri.symbol.SimpleFillSymbol(
esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(
esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color("#ff0000"), 1),
new dojo.Color([172, 148, 85, 0.25]));
graphic = new esri.Graphic(polygon, symbol, {行政区: "下城区"});
polygonLayer.add(graphic);
3.4.根据经纬度定位地图中心
function mapSetPointAndZoom(x, y, z) {
point = new esri.geometry.Point(x, y);
map.centerAndZoom(point, z);
}
3.5.根据经纬度数数组在地图上进行轨迹运动
3.5.1.创建按钮事件:
<div id="myMap">
<span>
<input type="button" id="runningStark" value="设置起点" onclick="runningStark()"/>
<input type="button" id="openTool" value="开启" onclick="openTool()"/>
<input type="button" id="closeTool" value="暂停" onclick="closeTool()"/>
<input type="button" id="continueTool" disabled="disabled" value="继续" onclick="continueTool()"/>
<input type="button" id="returnTool" disabled="disabled" readonly value="返回" onclick="returnTool()"/>
</span>
</div>
3.5.2.准备数据:
polylineJson = { // 测试数据
"paths": [[
[120.140524529883, 30.3270758041052], [120.140235682031, 30.3270525737175], [120.139817472998, 30.3270240400276], [120.139431404836, 30.3270008815856],
[120.139123789931, 30.3270506635574], [120.138809475077, 30.3271387683396], [120.138707810317, 30.3269174361909], [120.138343646942, 30.3268787653429],
[120.138002517003, 30.3268448321235], [120.137661679343, 30.3268103188413], [120.137338229176, 30.3267788839385], [120.137012494731, 30.3267463536615],
[120.136655150015, 30.3267106370864], [120.136298906969, 30.3266752415693], [120.135942734070, 30.3266398667366], [120.135580169689, 30.3266049748399],
[120.135589970501, 30.3265466502079], [120.135493511916, 30.3265342665433], [120.135307094147, 30.3265103346844], [120.135237810377, 30.3265014403893],
[120.135230226394, 30.3265702421231], [120.134855343999, 30.3265328932786], [120.134527389128, 30.3265009583527], [120.134170643361, 30.3264658119479],
[120.133820501315, 30.3264309839029], [120.133472301805, 30.3263960002753], [120.133120725341, 30.3263816030287], [120.132775043034, 30.3263553985830],
[120.132400386369, 30.3263183069445], [120.132396155958, 30.3263859143786], [120.132103850213, 30.3263658298193], [120.131776976327, 30.3263433701506],
[120.131677380907, 30.3263365272092], [120.131652148628, 30.3259547497121]
]],
"spatialReference":{"wkid":4326}
};
3.5.3.设置起点:
function runningStark(){
// 创建路线
xlPolyline = new esri.geometry.Polyline(polylineJson);
xlSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASH,new dojo.Color("#0000FF"),3);
xlGraphic = new esri.Graphic(xlPolyline,xlSymbol);
map.graphics.add(xlGraphic); // 创建起点
qdPoint = new esri.geometry.Point(120.140524529883, 30.3270758041052,new esri.SpatialReference({wkid:4490}));
qdSymbol = new esri.symbol.PictureMarkerSymbol("/demo0607/images/car.png",10,20);
qdGraphic = new esri.Graphic(qdPoint,qdSymbol);
map.centerAndZoom(qdPoint,17); // 定位到起点
map.graphics.add(qdGraphic);
}
3.5.4.开始轨迹:
function openTool(){
if(typeof(moving)!="undefined"){
clearInterval(moving); //清除移动
}
points = polylineJson.paths[0];
qdGraphic.geometry.x = points[0][0];
qdGraphic.geometry.y = points[0][1];
map.graphics.refresh();
move(0,1);
document.getElementById("closeTool").disabled=false;
document.getElementById("continueTool").disabled=true;
document.getElementById("returnTool").disabled=true;
}
3.5.5.暂停轨迹
function closeTool(){
clearInterval(moving);
document.getElementById("continueTool").disabled=false;
document.getElementById("returnTool").disabled=false;
}
3.5.6.继续轨迹
function continueTool(){
if(typeof(moving)!="undefined"){
clearInterval(moving); // 清除移动
}
move(startNum,endNum);
document.getElementById("returnTool").disabled=true;
}
3.5.7.返回起点
function returnTool(){
qdGraphic.geometry.x = points[0][0];
qdGraphic.geometry.y = points[0][1];
qdGraphic.symbol.angle=0;
map.graphics.refresh();
$("continueTool").disabled=true;
}
3.5.8.相关工具函数
3.5.8.1.根据序列点坐标 进行移动
function move(start,end){
startX = points[start][0];
startY = points[start][1];
endX = points[end][0];
endY = points[end][1]; p = (endY - startY) / (endX - startX);//斜率
var v = 0.000315;//距离 距离越小 位置越精确
moving = setInterval(function(){
startNum = start;
endNum = end;
if(endNum == points.length - 1){
document.getElementById("closeTool").disabled=true;
document.getElementById("continueTool").disabled=true;
document.getElementById("returnTool").disabled=false;
}
//分别计算 x,y轴方向速度
if(Math.abs(p) == Number.POSITIVE_INFINITY){//无穷大
qdGraphic.geometry.y += v;
} else {
if(endX < startX){
//qdGraphic.geometry.x -= (1 / Math.sqrt(1 + p * p)) * v;
//qdGraphic.geometry.y -= (p / Math.sqrt(1 + p * p)) * v;
qdGraphic.geometry.x = endX;
qdGraphic.geometry.y = endY;
//计算汽车角度
qdGraphic.symbol.angle = calculateXAndYVision(startX, startY, endX, endY); //// (Math.PI / 2 - Math.atan(p)) * 180 / Math.PI+180
} else {
//qdGraphic.geometry.x += (1 / Math.sqrt(1 + p * p)) * v;
//qdGraphic.geometry.y += (p / Math.sqrt(1 + p * p)) * v;
qdGraphic.geometry.x = endX;
qdGraphic.geometry.y = endY;
//计算汽车角度
qdGraphic.symbol.angle = calculateXAndYVision(startX, startY, endX, endY); ////(Math.PI / 2 - Math.atan(p)) * 180 / Math.PI
}
}
//图层刷新
map.graphics.refresh();
//if (Math.abs(qdGraphic.geometry.x - endX) <= 0.01 && Math.abs(qdGraphic.geometry.y - endY) <= 0.01) {
clearInterval(moving);
startNum = start++;
endNum = end++;
if (end < points.length){
move(start, end);
}
//}
}, 300);
}
3.5.8.2.计算x和y的视角
function calculateXAndYVision(startX, startY, endX, endY){
tan = Math.atan(Math.abs((endY - startY)/(endX - startX))) * 180 / Math.PI + 90;
if (endX > startX && endY > startY){ // 第一象限
return - tan + 180;
} else if (endX > startX && endY < startY){ // 第二象限
return tan;
} else if (endX < startX && endY > startY){ // 第三象限
return tan - 180;
} else if (endX < startX && endY < startY){ // 第四象限
return - tan;
}
}
关于ArcGis for javascript的使用的更多相关文章
- Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式
原文:Arcgis for Javascript API下类似于百度搜索A.B.C.D marker的实现方式 多说无益,首先贴两张图让大家看看具体的效果: 图1.百度地图搜索结果 图2.Arcgis ...
- ArcGIS For JavaScript API 默认参数
“esri.config”的是在1.3版中的的“esriConfig”的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对于版本1.3或更高版本,您可以使用“es ...
- arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现
图层控制是非常多GIS系统里面必须的一个小功能,本文就说说arcgis for javascript下ArcGISDynamicMapServiceLayer图层控制的实现方式.首先看图: 实现效果 ...
- Arcgis for javascript不同的状态下自己定义鼠标样式
俗话说:爱美之心.人皆有之. 是的.没错,即使我仅仅是一个做地图的,我也希望自己的地图看起来好看一点. 在本文,给大家讲讲在Arcgis for javascript下怎样自己定义鼠标样式. 首先.说 ...
- Arcgis for javascript map操作addLayer具体解释
本节的内容非常easy.说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种.例如以下图: watermark/2/ ...
- Arcgis for Javascript之featureLayer图和属性互操作性
说明:主要实现加载FeatureLayer并显示属性表,而要实现联动属性表与地图,首先,看看实施后的效果: 显示效果 如上图所看到的,本文章主要实现了下面几个功能:1.FeatureLayer属性表的 ...
- 利用Arcgis for javascript API绘制GeoJSON并同时弹出多个Popup
1.引言 由于Arcgis for javascript API不可以绘制Geojson,并且提供的Popup一般只可以弹出一个,在很多专题图制作中,会遇到不少的麻烦.因此本文结合了两个现有的Arcg ...
- ArcGIS for JavaScript学习(一)
一 API准备 从网上下载开发包:ArcGIS for JavaScript(百度网盘地址) sdk中含有API的帮助和例子 2.离线部署(以IIS为例) 配置IIS(详见网络):解压离线包,包中的 ...
- arcgis for JavaScript API 4.5与4.3的区别
arcgis 4.5与4.3区别: 鉴于本人使用4.3时间比较久,而arcgis for JavaScript API于9月28日推出了4.5版本,但是直接更换4.5的init.js会出现意想不到的错 ...
- ArcGIS for JavaScript继承TiledMapServiceLayer来实现“动态切图”
这种方式可以提高出图速度于效果,算法见http://blog.newnaw.com/?p=633,我用ArcGIS for JavaScript API来实现.具体代码为: function init ...
随机推荐
- gcc,gdb基础学习1
gcc: (1)gcc -O1 -S code.c 这里的-S可以的到code.c的汇编(只进行了预处理和编译这:两个阶段形成 了汇编代码code·s) (2)gcc -c code.c 这里 ...
- 胜利大逃亡--hdu --1253(bfs)
Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C ...
- codeforces 892E(离散化+可撤销并查集)
题意 给出一个n个点m条边的无向联通图(n,m<=5e5),有q(q<=5e5)个询问 每个询问询问一个边集{Ei},回答这些边能否在同一个最小生成树中 分析 要知道一个性质,就是权值不同 ...
- nginx.org与nginx.com有什么区别(Nginx与Nginx Plus)
nginx.org是开源社区,管理着Nginx开源版. nginx.xom是商业社区,管理着Nginx Plus商业版. 商业版和开源版是有很大区别的,服务还加更强大的功能,当然依托开源社区加载第三方 ...
- 【Todo】STAR面试法
今天在面试培训的时候,接触到了STAR面试法. 觉得挺好的,用来准备非技术面试,还蛮全面的.所以可以多了解一下. 可以参考:http://www.hrloo.com/rz/73652.html
- Could not find leader nimbus
运行storm ui, 然后访问storm ui 的网页的时候,死活跑不起来.后面,根据下面这篇文章的说法, 停止zookeeper 之后,删掉zookeeper 上面的storm 节点, 然后再重启 ...
- iOS中MRC和ARC混编
1. 在targets的build phases选项下Compile Sources下选择,不使用arc编译的文件.双击它.输入 -fno-objc-arc 就可以(这个类就能够使用MRC模式) 2. ...
- Office EXCEL 创建图片超链接打不开怎么办 Excel打开图片提示发生了意外错误怎么办
如下图所示,点击超链接提示无法打开指定的文件 如果使用Office打开,则提示发生了意外错误 你需要先把IE浏览器打开,这样就可以打开了,并非是图像的相对位置不正确导致的.
- Visual Studio VS如何拷贝一个项目的窗体文件到另一个项目
1 比如下我有一个项目,我要把这个Config整个窗体和代码拷贝到另一个项目 2 在新项目中添加现有项,然后把这个窗体相关的三个文件都添加到新的项目中 3 然后在新窗体中就什么都有了 ...
- onfocus事件,onblur事件;Focus()方法,Blur()方法
<1> <pre name="code" class="html"><!DOCTYPE html PUBLIC "-// ...