1590 lines
71 KiB
JavaScript
1590 lines
71 KiB
JavaScript
/******************************MapObject******************************/
|
||
/******************************地图初始化类******************************/
|
||
if (typeof (MapObject) !== "function") {
|
||
MapC = undefined;
|
||
LocatorC = undefined;
|
||
esriConfigC = undefined;
|
||
WebTileLayerC = undefined;
|
||
GraphicsLayerC = undefined;
|
||
GraphicC = undefined;
|
||
PointC = undefined;
|
||
MultipointC = undefined;
|
||
PolylineC = undefined;
|
||
PolygonC = undefined;
|
||
CircleC = undefined;
|
||
ExtentC = undefined;
|
||
GeometryEngineC = undefined;
|
||
SimpleMarkerSymbolC = undefined;
|
||
SimpleLineSymbolC = undefined;
|
||
SimpleFillSymbolC = undefined;
|
||
TextSymbolC = undefined;
|
||
PictureMarkerSymbolC = undefined;
|
||
FontC = undefined;
|
||
InfoWindowC = undefined;
|
||
PopupTemplateC = undefined;
|
||
InfoTemplateC = undefined;
|
||
BasemapToggleC = undefined;
|
||
BasemapGalleryC = undefined;
|
||
BasemapC = undefined;
|
||
BasemapLayerC = undefined;
|
||
UnitsC = undefined;
|
||
ColorC = undefined;
|
||
ClusterLayerC = undefined;
|
||
ArcGISDynamicMapServiceLayerC = undefined;
|
||
On = undefined;
|
||
Dom = undefined;
|
||
|
||
MapObject = function () {
|
||
this.mapContainer = "";
|
||
this.basemapToggleContainer = "";
|
||
this.mapInitialized = undefined;
|
||
|
||
this.MyMap = undefined;
|
||
|
||
this.BaseMachineLayer = undefined
|
||
this.BaseMapLayer = undefined
|
||
this.HisptoryPointLayer = undefined//用于显示历史记录的点
|
||
this.RoutePointLayer = undefined;
|
||
this.RouteSelectionPointLayer = undefined;
|
||
this.SearchPointLayer = undefined;
|
||
this.BasePolygonLayer = undefined;
|
||
this.TrafficLayer = undefined;
|
||
this.WeatherLayer = undefined;
|
||
this.TransportationLayer = undefined;
|
||
|
||
this.load = function (mc, bmtc, mapInitialized) {
|
||
this.mapContainer = mc;
|
||
this.basemapToggleContainer = bmtc;
|
||
this.mapInitialized = mapInitialized;
|
||
this.initMap(this);
|
||
}
|
||
|
||
this.initialized = function (mapObj) {
|
||
//var infoWindow = new InfoWindowC({}, $("<div id='xxx1' style='background-color:white;'></div>")[0]);
|
||
//infoWindow.startup();
|
||
var basemap = currentbasemap;
|
||
if (userParams) {
|
||
if (userParams.BaseMap == "Imagery") {
|
||
basemap = "satellite";
|
||
$("#basemapImg").css("background-image", "url('https://js.arcgis.com/3.40/esri/images/basemap/satellite.jpg')");
|
||
$("#basemapTitle").text(GetTextByKey("P_MAP_IMAGERY", "Imagery"));
|
||
}
|
||
else if (userParams.BaseMap == "Streets") {
|
||
basemap = "streets";
|
||
$("#basemapImg").css("background-image", "url('https://js.arcgis.com/3.40/esri/images/basemap/streets.jpg')");
|
||
$("#basemapTitle").text(GetTextByKey("P_MAP_STREETS", "Streets"));
|
||
}
|
||
else {
|
||
$("#basemapImg").css("background-image", "url('https://js.arcgis.com/3.40/esri/images/basemap/topo.jpg')");
|
||
$("#basemapTitle").text(GetTextByKey("P_MAP_TOPOGRAPHIC", "Topographic"));
|
||
}
|
||
}
|
||
else {
|
||
$("#basemapImg").css("background-image", "url('https://js.arcgis.com/3.40/esri/images/basemap/topo.jpg')");
|
||
$("#basemapTitle").text(GetTextByKey("P_MAP_TOPOGRAPHIC", "Topographic"));
|
||
}
|
||
mapObj.MyMap = new MapC(this.mapContainer, {
|
||
basemap: basemap,// "streets", "satellite", "topo",
|
||
center: [0, 0],
|
||
zoom: 5,
|
||
sliderPosition: "top-right",
|
||
slider: showMapSlider
|
||
//infoWindow: infoWindow
|
||
});
|
||
if (typeof setCookie === "function")
|
||
setCookie("basemap", basemap);
|
||
mapObj.MyMap.disableKeyboardNavigation();
|
||
|
||
mapObj.MyMap.on("load", function (e) {
|
||
$("#mapView_zoom_slider").css("top", 100).css("right", 10);
|
||
});
|
||
|
||
mapObj.MyMap.on("click", function (e) {
|
||
if (window.currentRouteStop != null) {
|
||
var stop = {
|
||
'x': e.mapPoint.getLongitude(),
|
||
'y': e.mapPoint.getLatitude()
|
||
};
|
||
stop.name = stop.x.toFixed(6) + ', ' + stop.y.toFixed(6);
|
||
window.currentRouteStop.data('stop', stop);
|
||
window.currentRouteStop.val(stop.name).trigger('change');
|
||
window.currentRouteStopName = window.currentRouteStop;
|
||
|
||
var point = new PointC([stop.x, stop.y]);
|
||
mapObj.Locator.locationToAddress(point, 100);
|
||
window.currentRouteStop.removeClass('focusing');
|
||
$('#routeCurrentLocation').hide();
|
||
delete window.currentRouteStop;
|
||
} else {
|
||
$("#basemapGallery").hide();
|
||
}
|
||
});
|
||
|
||
this.BasePolygonLayer = mapObj.addGraphicsLayer();
|
||
this.BaseMapLayer = mapObj.addGraphicsLayer();
|
||
this.HisptoryPointLayer = mapObj.addGraphicsLayer();//用于显示历史记录的点,需在BaseMapLayer之后
|
||
this.RoutePointLayer = mapObj.addGraphicsLayer();
|
||
this.RouteSelectionPointLayer = mapObj.addGraphicsLayer();
|
||
this.SearchPointLayer = mapObj.addGraphicsLayer();
|
||
|
||
var layer = new ClusterLayerC({
|
||
"labelOffset": 35,
|
||
"labelColor": "#F00",
|
||
"labelFontSize": "20px",
|
||
"labelFontFamily": "Calibri",
|
||
"labelFontWeight": FontC.WEIGHT_BOLD
|
||
});//可合并显示的图层
|
||
mapObj.MyMap.addLayer(layer);
|
||
this.BaseMachineLayer = layer;
|
||
|
||
this.TransportationLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/arcgis/rest/services/Reference/World_Transportation/MapServer");
|
||
if (basemap == "satellite")
|
||
mapObj.MyMap.addLayer(this.TransportationLayer);
|
||
|
||
|
||
//var toggle = new BasemapToggleC({
|
||
// //titleVisible: true,
|
||
// map: this.MyMap,
|
||
// basemap: "satellite"
|
||
//}, this.basemapToggleContainer);
|
||
//toggle.startup();
|
||
|
||
var basemapGallery = new BasemapGalleryC({
|
||
showArcGISBasemaps: false,
|
||
map: this.MyMap
|
||
}, this.basemapToggleContainer);
|
||
|
||
var satellitemap = new esri.dijit.Basemap({
|
||
layers: [new esri.dijit.BasemapLayer({
|
||
url: "http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"
|
||
})],
|
||
title: GetTextByKey("P_MAP_IMAGERY", "Imagery"),
|
||
thumbnailUrl: "https://js.arcgis.com/3.40/esri/images/basemap/satellite.jpg"
|
||
});
|
||
basemapGallery.add(satellitemap);
|
||
|
||
var topomap = new esri.dijit.Basemap({
|
||
layers: [new esri.dijit.BasemapLayer({
|
||
url: "http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"
|
||
})],
|
||
title: GetTextByKey("P_MAP_TOPOGRAPHIC", "Topographic"),
|
||
thumbnailUrl: "https://js.arcgis.com/3.40/esri/images/basemap/topo.jpg"
|
||
});
|
||
basemapGallery.add(topomap);
|
||
|
||
var streetmap = new esri.dijit.Basemap({
|
||
layers: [new esri.dijit.BasemapLayer({
|
||
//type: "OpenStreetMap",
|
||
url: "http://server.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer"
|
||
})],
|
||
title: GetTextByKey("P_MAP_STREETS", "Streets"),
|
||
thumbnailUrl: "https://js.arcgis.com/3.40/esri/images/basemap/streets.jpg"
|
||
|
||
});
|
||
basemapGallery.add(streetmap);
|
||
|
||
basemapGallery.startup();
|
||
|
||
var _this = this;
|
||
basemapGallery.on("selection-change", function () {
|
||
var basemap = basemapGallery.getSelected();
|
||
if (basemap) {
|
||
if (basemap.title == "Imagery")
|
||
mapObj.MyMap.addLayer(_this.TransportationLayer);
|
||
else
|
||
mapObj.MyMap.removeLayer(_this.TransportationLayer);
|
||
|
||
$("#basemapImg").css("background-image", "url('" + basemap.thumbnailUrl + "')");
|
||
$("#basemapTitle").text(basemap.title);
|
||
if (userParams) {
|
||
userParams.Basemap = basemap.title;
|
||
setUserParams();
|
||
if (typeof setCookie === "function") {
|
||
var bm = "topo";
|
||
if (userParams.Basemap == "Imagery")
|
||
bm = "satellite";
|
||
else if (userParams.Basemap == "Streets")
|
||
bm = "streets";
|
||
setCookie("basemap", bm);
|
||
}
|
||
}
|
||
}
|
||
$("#basemapGallery").hide();
|
||
});
|
||
|
||
basemapGallery.on("error", function (msg) {
|
||
console.log("basemap gallery error: ", msg);
|
||
});
|
||
|
||
if (this.mapInitialized)
|
||
this.mapInitialized();
|
||
}
|
||
|
||
this.initMap = function (mapObj) {
|
||
require([
|
||
"esri/map",
|
||
"esri/tasks/locator",
|
||
"esri/layers/WebTiledLayer",
|
||
"esri/layers/GraphicsLayer",
|
||
"esri/graphic",
|
||
"esri/geometry/Point",
|
||
"esri/geometry/Multipoint",
|
||
"esri/geometry/Polyline",
|
||
"esri/geometry/Polygon",
|
||
"esri/geometry/Circle",
|
||
"esri/geometry/Extent",
|
||
"esri/geometry/geometryEngine",
|
||
"esri/symbols/SimpleMarkerSymbol",
|
||
"esri/symbols/SimpleLineSymbol",
|
||
"esri/symbols/SimpleFillSymbol",
|
||
"esri/symbols/TextSymbol",
|
||
"esri/symbols/PictureMarkerSymbol",
|
||
"esri/symbols/Font",
|
||
"esri/dijit/InfoWindow",
|
||
"esri/dijit/PopupTemplate",
|
||
"esri/InfoTemplate",
|
||
"esri/dijit/BasemapToggle",
|
||
"esri/dijit/BasemapGallery",
|
||
"esri/dijit/Basemap",
|
||
"esri/dijit/BasemapLayer",
|
||
"esri/units",
|
||
"esri/Color",
|
||
"extras1/clusterlayer",
|
||
"esri/layers/ArcGISDynamicMapServiceLayer",
|
||
"esri/urlUtils",
|
||
"dojo/on",
|
||
"dojo/dom",
|
||
"dojo/domReady!"
|
||
], function (Map,
|
||
Locator,
|
||
WebTileLayer,
|
||
GraphicsLayer,
|
||
Graphic,
|
||
Point,
|
||
Multipoint,
|
||
Polyline,
|
||
Polygon,
|
||
Circle,
|
||
Extent,
|
||
GeometryEngine,
|
||
SimpleMarkerSymbol,
|
||
SimpleLineSymbol,
|
||
SimpleFillSymbol,
|
||
TextSymbol,
|
||
PictureMarkerSymbol,
|
||
Font,
|
||
InfoWindow,
|
||
PopupTemplate,
|
||
InfoTemplate,
|
||
BasemapToggle,
|
||
BasemapGallery,
|
||
Basemap,
|
||
BasemapLayer,
|
||
Units,
|
||
Color,
|
||
ClusterLayer,
|
||
ArcGISDynamicMapServiceLayer,
|
||
urlUtils,
|
||
on,
|
||
dom) {
|
||
MapC = Map;
|
||
LocatorC = Locator;
|
||
esriConfigC = esriConfig;
|
||
WebTileLayerC = WebTileLayer;
|
||
GraphicsLayerC = GraphicsLayer;
|
||
GraphicC = Graphic;
|
||
PointC = Point;
|
||
MultipointC = Multipoint;
|
||
PolylineC = Polyline;
|
||
PolygonC = Polygon;
|
||
CircleC = Circle;
|
||
ExtentC = Extent;
|
||
GeometryEngineC = GeometryEngine;
|
||
SimpleMarkerSymbolC = SimpleMarkerSymbol;
|
||
SimpleLineSymbolC = SimpleLineSymbol;
|
||
SimpleFillSymbolC = SimpleFillSymbol;
|
||
TextSymbolC = TextSymbol;
|
||
PictureMarkerSymbolC = PictureMarkerSymbol;
|
||
FontC = Font;
|
||
InfoWindowC = InfoWindow;
|
||
PopupTemplateC = PopupTemplate;
|
||
InfoTemplateC = InfoTemplate;
|
||
BasemapToggleC = BasemapToggle;
|
||
BasemapGalleryC = BasemapGallery;
|
||
BasemapC = Basemap;
|
||
BasemapLayerC = BasemapLayer;
|
||
UnitsC = Units;
|
||
ColorC = Color;
|
||
ClusterLayerC = ClusterLayer;
|
||
ArcGISDynamicMapServiceLayerC = ArcGISDynamicMapServiceLayer;
|
||
On = on;
|
||
Dom = dom;
|
||
|
||
|
||
urlUtils.addProxyRule({
|
||
urlPrefix: "traffic.arcgis.com",
|
||
proxyUrl: "proxy/proxy.ashx"
|
||
});
|
||
|
||
if (mapObj) {
|
||
mapObj.initialized(mapObj);
|
||
mapObj.Locator = new Locator("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer");
|
||
mapObj.LocatorAsync = new Locator("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer");
|
||
mapObj.Locator.on('location-to-address-complete', function (e) {
|
||
if (e.address.address) {
|
||
var address = e.address.address;
|
||
if (window.currentRouteStopName) {
|
||
var label = getAddressLabel(address);
|
||
window.currentRouteStopName.val(label); // LongLabel
|
||
var stop = window.currentRouteStopName.data('stop');
|
||
if (stop != null) {
|
||
stop.name = label;
|
||
}
|
||
delete window.currentRouteStopName;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
this.addGraphicsLayer = function () {
|
||
var layer = new GraphicsLayerC();
|
||
this.MyMap.addLayer(layer);
|
||
return layer;
|
||
}
|
||
|
||
this.showTrafficLayer = function (state) {
|
||
if (state) {
|
||
if (!this.TrafficLayer)
|
||
this.TrafficLayer = new ArcGISDynamicMapServiceLayerC("https://traffic.arcgis.com/arcgis/rest/services/World/Traffic/MapServer");
|
||
this.TrafficLayer.refreshInterval = 3;
|
||
this.MyMap.addLayer(this.TrafficLayer);
|
||
}
|
||
else {
|
||
if (this.TrafficLayer)
|
||
this.MyMap.removeLayer(this.TrafficLayer);
|
||
}
|
||
}
|
||
|
||
this.showWeatherLayer = function (state) {
|
||
if (state) {
|
||
if (!this.WeatherLayer)
|
||
this.WeatherLayer = new ArcGISDynamicMapServiceLayerC("https://nowcoast.noaa.gov/arcgis/rest/services/nowcoast/radar_meteo_imagery_nexrad_time/MapServer");
|
||
this.WeatherLayer.refreshInterval = 5;
|
||
this.MyMap.addLayer(this.WeatherLayer);
|
||
}
|
||
else {
|
||
if (this.WeatherLayer)
|
||
this.MyMap.removeLayer(this.WeatherLayer);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/******************************MapHelper******************************/
|
||
/******************************Machine,Jobsite,Dealer Location,Shape相关地图操作类******************************/
|
||
if (typeof (MapHelper) !== "function") {
|
||
MapHelper = function (mapInitialized) {
|
||
var mapObj = new MapObject();
|
||
mapObj.load("mapView", "basemapGallery", afterMapInitialized);
|
||
|
||
var machineGraphics = [];
|
||
var shownMachines = [];
|
||
this.unShownMachineIDs = [];//不需显示的机器ID
|
||
this.unShownJobSiteIDs = [];//不需要显示的JobSiteID
|
||
var toolTipAssetSummary;
|
||
var toolTipJobsiteSummary;
|
||
|
||
function afterMapInitialized() {
|
||
var alwaysShow = false;
|
||
|
||
mapObj.BaseMachineLayer.on("mouse-over", function (e) {
|
||
if (!alwaysShow) {
|
||
mapObj.BaseMachineLayer.clearSingles();
|
||
showInfoWindow(e, 0);
|
||
}
|
||
});
|
||
|
||
mapObj.BaseMachineLayer.on("mouse-out", function (e) {
|
||
if (!alwaysShow) {
|
||
mapObj.MyMap.infoWindow.hide();
|
||
if (toolTipAssetSummary)
|
||
toolTipAssetSummary.status = 1;
|
||
}
|
||
});
|
||
|
||
mapObj.BaseMachineLayer.on("click", function (e) {
|
||
if (e.graphic) {
|
||
if (window.currentRouteStopName != null) {
|
||
//delete window.currentRouteStopName;
|
||
} else {
|
||
alwaysShow = true;
|
||
}
|
||
}
|
||
});
|
||
|
||
mapObj.BaseMapLayer.on("mouse-over", function (e) {
|
||
if (!alwaysShow)
|
||
showInfoWindow(e);
|
||
});
|
||
|
||
mapObj.BaseMapLayer.on("mouse-out", function (e) {
|
||
if (!alwaysShow)
|
||
mapObj.MyMap.infoWindow.hide();
|
||
});
|
||
|
||
mapObj.BaseMapLayer.on("click", function (e) {
|
||
if (e.graphic) {
|
||
mapObj.BaseMachineLayer.clearSingles();
|
||
e.graphic.getDojoShape().moveToFront();
|
||
showInfoWindow(e);
|
||
alwaysShow = true;
|
||
}
|
||
});
|
||
|
||
mapObj.BasePolygonLayer.on("mouse-over", function (e) {
|
||
if (!alwaysShow && userParams.ShowJSTooltip) {
|
||
mapObj.MyMap.infoWindow.clearFeatures();
|
||
showInfoWindow(e, 1);
|
||
}
|
||
});
|
||
|
||
mapObj.BasePolygonLayer.on("mouse-out", function (e) {
|
||
if (!alwaysShow) {
|
||
mapObj.MyMap.infoWindow.hide();
|
||
if (toolTipJobsiteSummary)
|
||
toolTipJobsiteSummary.status = 1;
|
||
}
|
||
});
|
||
|
||
mapObj.HisptoryPointLayer.on("click", function (e) {
|
||
if (e.graphic) {
|
||
mapObj.MyMap.infoWindow.clearFeatures();
|
||
e.graphic.getDojoShape().moveToFront();
|
||
//showInfoWindow(e);
|
||
alwaysShow = true;
|
||
|
||
mapObj.MyMap.infoWindow.setFeatures(locationHistoryPointGraphics);
|
||
var index = locationHistoryPointGraphics.indexOf(e.graphic);
|
||
if (index >= 0)
|
||
mapObj.MyMap.infoWindow.select(index)
|
||
mapObj.MyMap.infoWindow.show(e.screenPoint, mapObj.MyMap.getInfoWindowAnchor(e.screenPoint));
|
||
}
|
||
});
|
||
|
||
mapObj.HisptoryPointLayer.on("mouse-over", function (e) {
|
||
if (!alwaysShow) {
|
||
mapObj.MyMap.infoWindow.clearFeatures();
|
||
showInfoWindow(e);
|
||
}
|
||
});
|
||
|
||
mapObj.HisptoryPointLayer.on("mouse-out", function (e) {
|
||
if (!alwaysShow)
|
||
mapObj.MyMap.infoWindow.hide();
|
||
});
|
||
|
||
mapObj.BasePolygonLayer.on("click", function (e) {
|
||
if (e.graphic) {
|
||
mapObj.MyMap.infoWindow.clearFeatures();
|
||
e.graphic.getDojoShape().moveToFront();
|
||
alwaysShow = true;
|
||
|
||
var singles = [];
|
||
for (var ii in machineGraphics) {
|
||
if (ii.indexOf("JSID") < 0)
|
||
continue;
|
||
var gg = machineGraphics[ii];
|
||
if (GeometryEngineC.intersects(e.graphic.geometry, gg.geometry))
|
||
singles.push(gg);
|
||
}
|
||
if (singles.length > 0) {
|
||
mapObj.MyMap.infoWindow.setFeatures(singles);
|
||
mapObj.MyMap.infoWindow.show(e.screenPoint, mapObj.MyMap.getInfoWindowAnchor(e.screenPoint));
|
||
}
|
||
else//shape
|
||
showInfoWindow(e);
|
||
}
|
||
});
|
||
|
||
mapObj.MyMap.infoWindow.on("hide", function (e) {
|
||
alwaysShow = false;
|
||
mapObj.BaseMachineLayer._popupedClusterData = null;
|
||
toolTipAssetSummary = null;
|
||
toolTipJobsiteSummary = null;
|
||
});
|
||
|
||
mapObj.MyMap.infoWindow.on("selection-change", function (e) {
|
||
var f = mapObj.MyMap.infoWindow.getSelectedFeature();
|
||
if (f && f.attributes) {
|
||
if (enableInfoWindow) {
|
||
if (f.attributes.Type === 0) {//Asset
|
||
if (window.currentRouteStop != null) {
|
||
var stop = {
|
||
'x': f.geometry.x,
|
||
'y': f.geometry.y,
|
||
'name': GetTextByKey('P_MR_ASSET', 'Asset') + ': ' + f.attributes.DisplayName,
|
||
'assetId': f.attributes.ID
|
||
};
|
||
window.currentRouteStop.data('stop', stop);
|
||
window.currentRouteStop.val(stop.name).trigger('change');
|
||
window.currentRouteStopName = window.currentRouteStop;
|
||
mapObj.Locator.locationToAddress(new PointC([stop.x, stop.y]), 100);
|
||
window.currentRouteStop.removeClass('focusing');
|
||
$('#routeCurrentLocation').hide();
|
||
delete window.currentRouteStop;
|
||
mapObj.MyMap.infoWindow.clearFeatures();
|
||
mapObj.MyMap.infoWindow.hide();
|
||
} else {
|
||
mapObj.MyMap.infoWindow.resize(520, 460);//resize只能设置max-height
|
||
$(".contentPane").css("height", 460).unbind();
|
||
if (typeof $assetsummary === "function") {
|
||
mapObj.MyMap.infoWindow.setContent("<div id='assetDetailCtrl'></div>");
|
||
if (toolTipAssetSummary)
|
||
toolTipAssetSummary.status = 1;
|
||
var assetInfos = null;
|
||
if (mapObj.MyMap.infoWindow.features && mapObj.MyMap.infoWindow.features.length > 0)
|
||
assetInfos = mapObj.MyMap.infoWindow.features.map(function (item) { return item.attributes });
|
||
toolTipAssetSummary = new $assetsummary("assetDetailCtrl", f.attributes.CompanyID, f.attributes.ID, f.attributes.AlertTip, 1, assetInfos);
|
||
|
||
var esripopop = $(".esriPopupWrapper");
|
||
esripopop.find(".tempdropdown").remove();
|
||
esripopop.find(".title").unbind().removeClass("titlelink");
|
||
if (assetInfos.length > 1) {
|
||
esripopop.find(".title").addClass("titlelink").click(function () {//title 弹出搜索框
|
||
var div_assets = $('<div class="tempdropdown" style="width: 460px;margin-left:46px;position:absolute;top:24px;z-index:1;background: white;"></div>');
|
||
div_assets.dropdown(assetInfos, {
|
||
search: true,
|
||
valueKey: 'ID',
|
||
textKey: 'DisplayName_O',
|
||
searchKeys: ['Name', 'Name2', 'VIN']
|
||
});
|
||
div_assets.find(".dropdown-wrapper").css("border", "1px solid #b9b9b9");
|
||
div_assets.dropdownVal(f.attributes.ID);
|
||
|
||
div_assets.on('select', function (_e, item) {
|
||
if (item && item.ID != f.attributes.ID) {
|
||
var temps = assetInfos.filter(function (a) { return a.ID == item.ID })
|
||
if (temps && temps.length > 0)
|
||
mapObj.MyMap.infoWindow.select(assetInfos.indexOf(temps[0]));
|
||
}
|
||
esripopop.find(".tempdropdown").remove();
|
||
});
|
||
|
||
$(".esriPopupWrapper").find(".tempdropdown").remove();
|
||
$(".esriPopupWrapper").append(div_assets);
|
||
});
|
||
}
|
||
}
|
||
else {
|
||
mapObj.MyMap.infoWindow.currentattributes = f.attributes;
|
||
getAssetByID(f.attributes.ID);
|
||
}
|
||
}
|
||
}
|
||
else if (f.attributes.Type === 1) {//Jobsite
|
||
mapObj.MyMap.infoWindow.resize(420, 300);//resize只能设置max-height
|
||
$(".contentPane").css("height", 300);
|
||
|
||
if (typeof $jobsitesummary === "function") {
|
||
mapObj.MyMap.infoWindow.setContent("<div id='JobsiteDetailCtrl'></div>");
|
||
if (toolTipJobsiteSummary)
|
||
toolTipJobsiteSummary.status = 1;
|
||
var jsInfos = null;
|
||
if (mapObj.MyMap.infoWindow.features && mapObj.MyMap.infoWindow.features.length > 0)
|
||
jsInfos = mapObj.MyMap.infoWindow.features.map(function (item) { return item.jobsite });
|
||
toolTipJobsiteSummary = new $jobsitesummary("JobsiteDetailCtrl", f.jobsite, 1, jsInfos);
|
||
toolTipJobsiteSummary.jobsitechanged = function (index) {
|
||
if (index >= 0)
|
||
mapObj.MyMap.infoWindow.select(index);
|
||
}
|
||
|
||
var esripopop = $(".esriPopupWrapper");
|
||
esripopop.find(".tempdropdown").remove();
|
||
esripopop.find(".title").unbind().removeClass("titlelink");
|
||
if (jsInfos.length > 1) {
|
||
esripopop.find(".title").addClass("titlelink").click(function () {//title 弹出搜索框
|
||
var div_assets = $('<div class="tempdropdown" style="width: 360px;margin-left:46px;position:absolute;top:24px;z-index:1;background: white;"></div>');
|
||
div_assets.dropdown(jsInfos, {
|
||
search: true,
|
||
valueKey: 'ID',
|
||
textKey: 'Name'
|
||
});
|
||
div_assets.find(".dropdown-wrapper").css("border", "1px solid #b9b9b9");
|
||
div_assets.dropdownVal(f.jobsite.ID);
|
||
|
||
div_assets.on('select', function (_e, item) {
|
||
if (item && item.ID != f.jobsite.ID) {
|
||
var temps = jsInfos.filter(function (a) { return a.ID == item.ID })
|
||
if (temps && temps.length > 0)
|
||
mapObj.MyMap.infoWindow.select(jsInfos.indexOf(temps[0]));
|
||
}
|
||
esripopop.find(".tempdropdown").remove();
|
||
});
|
||
|
||
$(".esriPopupWrapper").find(".tempdropdown").remove();
|
||
$(".esriPopupWrapper").append(div_assets);
|
||
});
|
||
}
|
||
}
|
||
else {
|
||
}
|
||
}
|
||
else if (f.attributes.Type === 2) {//History Point
|
||
mapObj.MyMap.infoWindow.resize(420, 200);//resize只能设置max-height
|
||
$(".contentPane").css("height", 200);
|
||
mapObj.MyMap.infoWindow.setContent(f.attributes.infoContent + "<br/>");//setContent最后没有空行,需添加一个空行,和selection-change保持一致
|
||
}
|
||
else if (f.attributes.Type === 3) {//Shape
|
||
mapObj.MyMap.infoWindow.setContent(f.attributes.infoContent + "<br/>");//setContent最后没有空行,需添加一个空行,和selection-change保持一致
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
mapObj.SearchPointLayer.on("click", function (e) {
|
||
var input = $('#routePlaces').data('parent');
|
||
if (input == null) {
|
||
return;
|
||
}
|
||
var graphic = e.graphic;
|
||
if (graphic == null) {
|
||
return;
|
||
}
|
||
var level = mapObj.MyMap.getLevel();
|
||
if (level < 14) {
|
||
mapObj.MyMap.setLevel(14);
|
||
}
|
||
mapObj.MyMap.centerAt(graphic.geometry);
|
||
|
||
$('#routePlaces').hide();
|
||
mapObj.SearchPointLayer.clear();
|
||
input.val(graphic.attributes.name).data('stop', {
|
||
'x': graphic.geometry.x,
|
||
'y': graphic.geometry.y,
|
||
'name': graphic.attributes.name
|
||
}).trigger('change');
|
||
});
|
||
|
||
if (mapInitialized)
|
||
mapInitialized();
|
||
}
|
||
|
||
function showInfoWindow(e, type) {
|
||
var esripopop = $(".esriPopupWrapper");
|
||
esripopop.find(".tempdropdown").remove();
|
||
esripopop.find(".title").unbind().removeClass("titlelink");
|
||
$(".esriPopupWrapper").find(".tempdropdown").remove();
|
||
if (enableInfoWindow && e.graphic && e.graphic.attributes) {
|
||
$(".maximize").css("display", "none");
|
||
$(".actionsPane").addClass("hidden");
|
||
mapObj.MyMap.infoWindow.setTitle(e.graphic.attributes.name || e.graphic.attributes.DisplayName);
|
||
if (type == 0) {
|
||
mapObj.MyMap.infoWindow.resize(520, 460);//resize只能设置max-height
|
||
$(".contentPane").css("height", 460).unbind();
|
||
|
||
if (typeof $assetsummary === "function") {
|
||
mapObj.MyMap.infoWindow.setContent("<div id='assetDetailCtrl'></div>");
|
||
if (toolTipAssetSummary)
|
||
toolTipAssetSummary.status = 1;
|
||
toolTipAssetSummary = new $assetsummary("assetDetailCtrl", e.graphic.attributes.CompanyID, e.graphic.attributes.ID, e.graphic.attributes.AlertTip, 1);
|
||
} else {
|
||
var currentattrs = mapObj.MyMap.infoWindow.currentattributes;
|
||
if (!currentattrs || e.graphic.attributes.ID != currentattrs.ID) {
|
||
mapObj.MyMap.infoWindow.currentattributes = e.graphic.attributes;
|
||
getAssetByID(e.graphic.attributes.ID);
|
||
}
|
||
}
|
||
}
|
||
else if (type == 1) {
|
||
mapObj.MyMap.infoWindow.resize(420, 300);//resize只能设置max-height
|
||
$(".contentPane").css("height", 300);
|
||
|
||
if (typeof $jobsitesummary === "function") {
|
||
mapObj.MyMap.infoWindow.setContent("<div id='JobsiteDetailCtrl'></div>");
|
||
if (toolTipJobsiteSummary)
|
||
toolTipJobsiteSummary.status = 1;
|
||
toolTipJobsiteSummary = new $jobsitesummary("JobsiteDetailCtrl", e.graphic.jobsite, 1);
|
||
}
|
||
else {
|
||
mapObj.MyMap.infoWindow.setContent(e.graphic.attributes.infoContent + "<br/>");//setContent最后没有空行,需添加一个空行,和selection-change保持一致
|
||
}
|
||
}
|
||
else {
|
||
mapObj.MyMap.infoWindow.resize(undefined, undefined);
|
||
$(".contentPane").css("height", "unset");
|
||
mapObj.MyMap.infoWindow.setContent(e.graphic.attributes.infoContent + "<br/>");//setContent最后没有空行,需添加一个空行,和selection-change保持一致
|
||
}
|
||
mapObj.MyMap.infoWindow.show(e.screenPoint, mapObj.MyMap.getInfoWindowAnchor(e.screenPoint));
|
||
}
|
||
}
|
||
|
||
this.changeBaseMap = function (bm) {
|
||
mapObj.MyMap.setBasemap(bm);
|
||
}
|
||
|
||
this.showTraffic = function (state) {
|
||
mapObj.showTrafficLayer(state);
|
||
}
|
||
|
||
this.showWeather = function (state) {
|
||
mapObj.showWeatherLayer(state);
|
||
}
|
||
|
||
this.showAssetDetailInfo = function (assetdetail) {
|
||
var attrs = mapObj.MyMap.infoWindow.currentattributes;
|
||
if (attrs && attrs.Type === 0 && attrs.ID == assetdetail.ID) {
|
||
assetdetail.AlertTip = attrs.AlertTip;
|
||
|
||
var popContent = getAssetPopupContent(assetdetail);
|
||
mapObj.MyMap.infoWindow.setContent(popContent + "<br/>");
|
||
attrs.infoContent = popContent;
|
||
}
|
||
}
|
||
|
||
this.showMachine = function (machine) {
|
||
this.removeMachine(machine);
|
||
var p = this.createMachinePoint(machine);
|
||
mapObj.BaseMachineLayer.add(p);
|
||
mapObj.MyMap.infoWindow.currentattributes = null;
|
||
shownMachines["MachineID" + machine.ID] = p;
|
||
}
|
||
|
||
this.showMachines = function (machines) {
|
||
var ps = [];
|
||
var infowindowassetexist = false;//infowindow显示的机器是否在查询结果里
|
||
var infowindowassetid = -1;
|
||
if (toolTipAssetSummary && toolTipAssetSummary.status == 0)
|
||
infowindowassetid = toolTipAssetSummary.assetid;
|
||
for (var i = 0; i < machines.length; i++) {
|
||
var machine = machines[i];
|
||
var p = this.createMachinePoint(machine);
|
||
ps.push(p);
|
||
shownMachines["MachineID" + machine.ID] = p;
|
||
if (infowindowassetid == machine.ID)
|
||
infowindowassetexist = true;
|
||
}
|
||
if (toolTipAssetSummary && toolTipAssetSummary.status == 0) {
|
||
if (infowindowassetexist) {
|
||
toolTipAssetSummary.refresh();
|
||
}
|
||
else {
|
||
mapObj.MyMap.infoWindow.currentattributes = null;
|
||
alwaysShow = false;
|
||
mapObj.MyMap.infoWindow.hide();
|
||
}
|
||
}
|
||
mapObj.BaseMachineLayer.adds(ps);
|
||
}
|
||
|
||
this.createMachinePoint = function (machine) {
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b> " + htmlencode(machine.Name) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_NAMECUSTOM_COLON", "Name (Custom):") + " </b>" + htmlencode(machine.Name2) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_SN_COLON", "SN:") + " </b>" + machine.VIN + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_MAKE_COLON", "Make:") + " </b>" + machine.Make + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_MODEL_COLON", "Model:") + " </b>" + machine.Model + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_TYPE_COLON", "Type:") + " </b>" + machine.AssetType + "<br/>";
|
||
var attributes = {
|
||
"Type": 0,//用于区分InfoWindow是否是Asset
|
||
"CompanyID": machine.CompanyID,
|
||
"ID": machine.ID,
|
||
"Name": htmlencode(machine.Name),
|
||
"Name2": htmlencode(machine.Name2),
|
||
"VIN": machine.VIN,
|
||
"DisplayName": htmlencode(machine.DisplayName),
|
||
"DisplayName_O": machine.DisplayName + " (" + machine.VIN + ")",
|
||
"Make": machine.Make,
|
||
"Model": machine.Model,
|
||
"AssetType": machine.AssetType,
|
||
//"EngineHours": machine.EngineHours,
|
||
//"Odometer": machine.Odometer,
|
||
//"OdometerUOM": machine.OdometerUOM,
|
||
"AlertTip": htmlencode(machine.AlertTips),
|
||
"IconUrl": machine.IconUrl,
|
||
//"EmptyIconUrl": machine.IconUrl.replace(new RegExp("typeid=\\d+&", "i"), "typeid=-1&").replace(new RegExp("mid=\\d+&", "i"), ""),
|
||
"EmptyIconUrl": machine.IconUrl.replace("typeid", "typeid=-1&t").replace("mid", "m"),
|
||
"Priority": machine.Priority,
|
||
"infoContent": popContent
|
||
};
|
||
var p = {
|
||
"id": machine.ID,
|
||
"x": machine.Longitude,
|
||
"y": machine.Latitude,
|
||
"attributes": attributes
|
||
}
|
||
|
||
return p;
|
||
}
|
||
|
||
|
||
this.locateMachine = function (machine, notShowInfowindow, level) {
|
||
//隐藏Popup的最大化和缩放至
|
||
$(".maximize").css("display", "none");
|
||
$(".actionsPane").addClass("hidden");
|
||
|
||
if (!level) {
|
||
level = mapObj.MyMap.getLevel();
|
||
if (level < 6)
|
||
level = 6
|
||
}
|
||
mapObj.MyMap.setLevel(level);
|
||
//mapObj.MyMap.centerAndZoom(point, level);
|
||
|
||
var p = shownMachines["MachineID" + machine.ID];
|
||
if (p) {
|
||
mapObj.BaseMachineLayer.locate(p, true, notShowInfowindow);
|
||
}
|
||
return p;
|
||
}
|
||
|
||
this.gotoMap = function (obj) {
|
||
if (obj)
|
||
mapObj.MyMap.setExtent(obj, true);
|
||
}
|
||
|
||
this.centerAt = function (point) {
|
||
mapObj.MyMap.centerAt(point);
|
||
}
|
||
|
||
this.removeMachine = function (machine) {
|
||
var p = shownMachines["MachineID" + machine.ID];
|
||
if (p) {
|
||
mapObj.BaseMachineLayer.remove(p);
|
||
//shownMachines.splice("MachineID" + machine.ID, 1);
|
||
delete shownMachines["MachineID" + machine.ID];
|
||
}
|
||
}
|
||
|
||
this.removeMachines = function (machines) {
|
||
if (machines && machines.length > 0) {
|
||
//var ps = [];
|
||
var psid = [];
|
||
for (var i in machines) {
|
||
var p = shownMachines["MachineID" + machines[i].ID];
|
||
//ps.push(p);
|
||
psid.push(p.id);
|
||
//shownMachines.splice("MachineID" + machines[i].ID, 1);
|
||
delete shownMachines["MachineID" + machines[i].ID];
|
||
}
|
||
//mapObj.BaseMachineLayer.removes(ps);
|
||
mapObj.BaseMachineLayer.removebyid(psid);
|
||
}
|
||
}
|
||
|
||
this.clearMachine = function () {
|
||
shownMachines = [];
|
||
mapObj.BaseMachineLayer.clearData();
|
||
}
|
||
|
||
this.showJobSite = function (js) {
|
||
this.removeJobSite(js);
|
||
if (js.Longitude == 0 && js.Latitude == 0) return;
|
||
var jsShape = null;
|
||
if (js.Radius > 0) {
|
||
jsShape = createJobSiteCircle(js);
|
||
}
|
||
else if (js.Polygon && js.Polygon.length >= 4) {//多边形
|
||
jsShape = createJobSitePolygon(js);
|
||
}
|
||
if (jsShape) {
|
||
mapObj.BasePolygonLayer.add(jsShape);
|
||
machineGraphics["JSID" + js.ID] = jsShape;
|
||
}
|
||
}
|
||
|
||
this.refreshJobsiteTooltip = function (jss) {
|
||
if (!toolTipJobsiteSummary
|
||
|| !toolTipJobsiteSummary.jobsite
|
||
|| toolTipJobsiteSummary.status != 0)
|
||
return;
|
||
for (var i = 0; i < jss.length; i++) {
|
||
var js = jss[i];
|
||
if (toolTipJobsiteSummary.jobsite.ID == js.ID) {
|
||
toolTipJobsiteSummary.refresh(js);
|
||
return;
|
||
}
|
||
}
|
||
if (toolTipJobsiteSummary && toolTipJobsiteSummary.status == 0) {
|
||
mapObj.MyMap.infoWindow.currentattributes = null;
|
||
alwaysShow = false;
|
||
mapObj.MyMap.infoWindow.hide();
|
||
}
|
||
}
|
||
|
||
function createJobSiteCircle(js) {
|
||
var point = new PointC({
|
||
longitude: js.Longitude,
|
||
latitude: js.Latitude
|
||
});
|
||
var unit = UnitsC.MILES;
|
||
if (js.Radius_UOM === "Kilometre")
|
||
unit = UnitsC.KILOMETERS;
|
||
var circle = new CircleC(
|
||
{
|
||
center: point,
|
||
radius: js.Radius,
|
||
radiusUnit: unit,
|
||
geodesic: true
|
||
});
|
||
|
||
// Create a symbol for rendering the graphic
|
||
var fillSymbol = new SimpleFillSymbolC({
|
||
color: [js.Color.Red, js.Color.Green, js.Color.Blue, 51],
|
||
outline: { // autocasts as new SimpleLineSymbol()
|
||
color: [js.Color.Red, js.Color.Green, js.Color.Blue]
|
||
}
|
||
});
|
||
fillSymbol.setStyle(SimpleFillSymbolC.STYLE_SOLID);
|
||
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b>" + htmlencode(js.Name) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_CODE_COLON", "Code:") + " </b>" + htmlencode(js.Code) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_NUMBER_COLON", "Number:") + " </b>" + htmlencode(js.Number) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LATLONG_COLON", "Lat/Long:") + " </b>" + js.Latitude + ", " + js.Longitude + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_DELIVERYADDRESS_COLON", "Delivery Address:") + " </b>" + htmlencode(js.Address1) + "<br/>";
|
||
|
||
popContent += "<br/><b>" + GetTextByKey("P_MV_FOREMAN_COLON", "Foreman:") + " </b>" + htmlencode(js.Foreman) + "<br/>";
|
||
|
||
popContent += "<br/><b>" + GetTextByKey("P_MV_STARTDATE_COLON", "Start Date:") + " </b>" + js.StartDateStr + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_ENDDATE_COLON", "End Date:") + " </b>" + js.EndDateStr + "<br/>";
|
||
|
||
popContent += "<br/><b>" + GetTextByKey("P_MV_NOTES_COLON", "Notes:") + " </b>" + htmlencode(js.Notes) + "<br/>";
|
||
|
||
var g = new GraphicC(circle, fillSymbol);
|
||
var name = htmlencode(js.Name);
|
||
if (js.Code && $.trim(js.Code) != "")
|
||
name += " / " + htmlencode(js.Code);
|
||
if (js.Number && $.trim(js.Number) != "")
|
||
name += " / " + htmlencode(js.Number);
|
||
g.setAttributes({ "infoContent": popContent, "name": name, "Type": 1 });
|
||
g.jobsite = js;
|
||
return g;
|
||
}
|
||
|
||
function createJobSitePolygon(js) {
|
||
var points = new Array();
|
||
for (var i = 0; i < js.Polygon.length; i++) {
|
||
var pi = js.Polygon[i];
|
||
var point = [pi.Longitude, pi.Latitude];
|
||
points.push(point);
|
||
}
|
||
var polygon = new PolygonC(points);
|
||
|
||
// Create a symbol for rendering the graphic
|
||
var fillSymbol = new SimpleFillSymbolC({
|
||
color: [js.Color.Red, js.Color.Green, js.Color.Blue, 51],
|
||
outline: { // autocasts as new SimpleLineSymbol()
|
||
color: [js.Color.Red, js.Color.Green, js.Color.Blue]
|
||
}
|
||
});
|
||
fillSymbol.setStyle(SimpleFillSymbolC.STYLE_SOLID);
|
||
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b>" + htmlencode(js.Name) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_CODE_COLON", "Code:") + " </b>" + htmlencode(js.Code) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_NUMBER_COLON", "Number:") + " </b>" + htmlencode(js.Number) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LATLONG_COLON", "Lat/Long:") + " </b>" + js.Latitude + ", " + js.Longitude + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_DELIVERYADDRESS_COLON", "Delivery Address:") + " </b>" + htmlencode(js.Address1) + "<br/>";
|
||
|
||
popContent += "<br/><b>" + GetTextByKey("P_JS_FOREMAN_COLON", "Foreman:") + " </b>" + htmlencode(js.Foreman) + "<br/>";
|
||
|
||
popContent += "<br/><b>" + GetTextByKey("P_MV_STARTDATE_COLON", "Start Date:") + " </b>" + js.StartDateStr + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_ENDDATE_COLON", "End Date:") + " </b>" + js.EndDateStr + "<br/>";
|
||
|
||
popContent += "<br/><b>" + GetTextByKey("P_MV_NOTES_COLON", "Notes:") + " </b>" + htmlencode(js.Notes) + "<br/>";
|
||
|
||
var g = new esri.Graphic(polygon, fillSymbol);
|
||
var name = htmlencode(js.Name);
|
||
if (js.Code && $.trim(js.Code) != "")
|
||
name += " / " + htmlencode(js.Code);
|
||
if (js.Number && $.trim(js.Number) != "")
|
||
name += " / " + htmlencode(js.Number);
|
||
g.setAttributes({ "infoContent": popContent, "name": name, "Type": 1 });
|
||
g.jobsite = js;
|
||
return g;
|
||
}
|
||
|
||
this.locateJobSite = function (js) {
|
||
var g = machineGraphics["JSID" + js.ID];
|
||
if (g) {
|
||
mapObj.MyMap.setExtent(g.geometry.getExtent());
|
||
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b>" + htmlencode(js.Name) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LATITUDE_COLON", "Latitude:") + " </b>" + js.Latitude + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LONGITUDE_COLON", "Longitude:") + " </b> " + js.Longitude + "<br/>";
|
||
|
||
var point = new PointC({
|
||
longitude: js.Longitude,
|
||
latitude: js.Latitude
|
||
});
|
||
//var p = mapObj.MyMap.toScreen(point);
|
||
//mapObj.MyMap.infoWindow.setTitle(htmlencode(js.Name));
|
||
//mapObj.MyMap.infoWindow.setContent(popContent);
|
||
//mapObj.MyMap.infoWindow.show(point, mapObj.MyMap.getInfoWindowAnchor(p));
|
||
showInfoWindow({ graphic: g, screenPoint: point }, 1);
|
||
}
|
||
}
|
||
|
||
this.removeJobSite = function (js, hidden) {
|
||
var g = machineGraphics["JSID" + js.ID];
|
||
if (g) {
|
||
mapObj.BasePolygonLayer.remove(g);
|
||
//machineGraphics.splice("JSID" + js.ID, 1);
|
||
delete machineGraphics["JSID" + js.ID];
|
||
|
||
if (hidden && toolTipJobsiteSummary && toolTipJobsiteSummary.status == 0 && mapObj.MyMap.infoWindow.features) {
|
||
for (var i = 0; i < mapObj.MyMap.infoWindow.features.length; i++) {
|
||
var f = mapObj.MyMap.infoWindow.features[i];
|
||
if (f && f.jobsite && f.jobsite.ID == js.ID) {
|
||
setTimeout(function () {
|
||
mapObj.MyMap.infoWindow.hide();
|
||
});
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
this.removeJobsites = function (jobsites) {
|
||
if (jobsites && jobsites.length > 0) {
|
||
for (var i in jobsites) {
|
||
var js = jobsites[i];
|
||
this.removeJobSite(js);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
var lastLocation;
|
||
var locationHistoryPolylines = [];
|
||
var locationLineGraphics = [];
|
||
var locationHistoryPointGraphics = [];
|
||
this.showLocationHistoryFromStart = function (m, locs, toindex, needCenter) {//从开始位置显示到指定索引的索引Location
|
||
this.clearLocationHistory();
|
||
var point;
|
||
for (var i = 0; i < locs.length && i <= toindex; i++) {
|
||
var loc = locs[i];
|
||
point = this.showLocationHistory(m, loc, false);
|
||
}
|
||
|
||
if (needCenter) {
|
||
mapObj.MyMap.centerAt(point);
|
||
}
|
||
}
|
||
|
||
this.showLocationHistory = function (m, loc, needCenter) {
|
||
var point = new PointC({
|
||
longitude: loc.Longitude,
|
||
latitude: loc.Latitude
|
||
});
|
||
point.loc = loc;
|
||
|
||
if (lastLocation) {
|
||
var polyLine = new PolylineC({ paths: [[]] });
|
||
var point0 = new PointC({
|
||
longitude: lastLocation.Longitude,
|
||
latitude: lastLocation.Latitude
|
||
});
|
||
polyLine.insertPoint(0, polyLine.paths[0].length, point0);
|
||
polyLine.insertPoint(0, polyLine.paths[0].length, point);
|
||
locationHistoryPolylines["l" + lastLocation.LogId] = polyLine;
|
||
polyLine.StartTime = lastLocation.LocationTime;
|
||
polyLine.EndTime = loc.LocationTime;
|
||
|
||
var lineGraphic = this.createLocationHistoryLineGraphic(polyLine);
|
||
locationLineGraphics["l" + lastLocation.LogId] = lineGraphic;
|
||
mapObj.BaseMapLayer.add(lineGraphic);
|
||
}
|
||
else {
|
||
var level = mapObj.MyMap.getLevel();
|
||
if (level < 12)
|
||
level = 12
|
||
mapObj.MyMap.setLevel(level);
|
||
}
|
||
lastLocation = loc;
|
||
|
||
var gpoint = this.createLocationHistoryPoint(m, point);
|
||
mapObj.HisptoryPointLayer.add(gpoint);
|
||
locationHistoryPointGraphics.push(gpoint);
|
||
|
||
if (needCenter)
|
||
mapObj.MyMap.centerAt(point);
|
||
|
||
return point;
|
||
}
|
||
|
||
this.clearLocationHistory = function () {
|
||
lastLocation = null;
|
||
locationHistoryPolylines = [];
|
||
for (var i in locationLineGraphics) {
|
||
mapObj.BaseMapLayer.remove(locationLineGraphics[i]);
|
||
}
|
||
locationLineGraphics = [];
|
||
for (var i in locationHistoryPointGraphics) {
|
||
mapObj.HisptoryPointLayer.remove(locationHistoryPointGraphics[i]);
|
||
}
|
||
locationHistoryPointGraphics = [];
|
||
}
|
||
|
||
var lastRouteLine;
|
||
var routeLinePolylines = [];
|
||
var routeLineGraphics = [];
|
||
var routeHistoryPointGraphics = [];
|
||
var routePoints;
|
||
this.showSelection = function (stops) {
|
||
if (stops == null) {
|
||
return;
|
||
}
|
||
mapObj.RouteSelectionPointLayer.clear();
|
||
for (var i = 0; i < stops.length; i++) {
|
||
var stop = stops[i];
|
||
var point = new PointC([stop.x, stop.y]);
|
||
var pointSymbol = new SimpleMarkerSymbolC(SimpleMarkerSymbolC.STYLE_CIRCLE, 12, null, new ColorC('black'));
|
||
var g = new GraphicC(point, pointSymbol);
|
||
mapObj.RouteSelectionPointLayer.add(g);
|
||
pointSymbol = new SimpleMarkerSymbolC(SimpleMarkerSymbolC.STYLE_CIRCLE, 9, null, new ColorC('white'));
|
||
g = new GraphicC(point, pointSymbol);
|
||
mapObj.RouteSelectionPointLayer.add(g);
|
||
}
|
||
};
|
||
this.clearPlaces = function () {
|
||
mapObj.SearchPointLayer.clear();
|
||
};
|
||
this.searchPlaces = function (name, next) {
|
||
var center = mapObj.MyMap.extent.getCenter();
|
||
var params = {
|
||
'address': {
|
||
'address': name
|
||
},
|
||
'location': new PointC([center.getLongitude(), center.getLatitude()]),
|
||
'outFields': ['PlaceName', 'Place_addr'],
|
||
'maxLocations': 10,
|
||
'langCode': _fleet.currentMapLang
|
||
};
|
||
mapObj.Locator.addressToLocations(params).then(function (results) {
|
||
next(results);
|
||
});
|
||
};
|
||
this.showPlaces = function (addrs) {
|
||
mapObj.SearchPointLayer.clear();
|
||
for (var i = 0; i < addrs.length; i++) {
|
||
var addr = addrs[i];
|
||
var point = this.createPlacePinPoint(
|
||
new PointC([addr.location.x, addr.location.y]),
|
||
addr
|
||
);
|
||
mapObj.SearchPointLayer.add(point);
|
||
}
|
||
};
|
||
this.getRouteLocationFromAsset = function (id) {
|
||
var asset = allAssets.filter(function (a) { return a.ID == id })[0];
|
||
if (asset != null) {
|
||
return {
|
||
'x': asset.Longitude,
|
||
'y': asset.Latitude
|
||
};
|
||
}
|
||
return null;
|
||
};
|
||
this.getRouteFromPosition = function (pos) {
|
||
if (window.currentRouteStop != null) {
|
||
var stop = {
|
||
'x': pos.longitude,
|
||
'y': pos.latitude
|
||
};
|
||
stop.name = stop.x.toFixed(6) + ', ' + stop.y.toFixed(6);
|
||
window.currentRouteStop.data('stop', stop);
|
||
window.currentRouteStop.val(stop.name).trigger('change');
|
||
window.currentRouteStopName = window.currentRouteStop;
|
||
|
||
var point = new PointC([stop.x, stop.y]);
|
||
mapObj.Locator.locationToAddress(point, 100);
|
||
window.currentRouteStop.removeClass('focusing');
|
||
delete window.currentRouteStop;
|
||
}
|
||
};
|
||
this.getRouteFromPositionAsync = function (pos) {
|
||
var point = new PointC([pos.x, pos.y]);
|
||
return mapObj.LocatorAsync.locationToAddress(point, 100);
|
||
};
|
||
this.showRouteFromStart = function (locs, start, recenter) {
|
||
if (start == 0) {
|
||
this.clearRouteHistory();
|
||
mapObj.RouteSelectionPointLayer.clear();
|
||
routePoints = new MultipointC();
|
||
}
|
||
for (var i = 0; i < locs.length; i++) {
|
||
var loc = locs[i];
|
||
routePoints.addPoint(new PointC({
|
||
longitude: loc[0],
|
||
latitude: loc[1]
|
||
}));
|
||
this.showRoute({
|
||
'Index': start + i,
|
||
'Longitude': loc[0],
|
||
'Latitude': loc[1]
|
||
}, i == 0, i == locs.length - 1, start == 0, recenter);
|
||
}
|
||
if (recenter) {
|
||
mapObj.MyMap.setExtent(routePoints.getExtent());
|
||
}
|
||
}
|
||
this.showRoute = function (loc, firstOne, lastOne, start, end) {
|
||
var point = new PointC({
|
||
longitude: loc.Longitude,
|
||
latitude: loc.Latitude
|
||
});
|
||
point.loc = loc;
|
||
|
||
if (lastRouteLine == null) {
|
||
lastRouteLine = {
|
||
type: 'polyline',
|
||
paths: [[]]
|
||
};
|
||
routeLinePolylines.push(lastRouteLine);
|
||
}
|
||
lastRouteLine.paths[0].push([loc.Longitude, loc.Latitude]);
|
||
if (lastOne) {
|
||
var polyline = new PolylineC({ paths: lastRouteLine.paths });
|
||
var symbol = new SimpleLineSymbolC({
|
||
color: [47, 99, 209],
|
||
width: 5
|
||
});
|
||
var lineGraphic = new GraphicC(polyline, symbol);
|
||
routeLineGraphics.push(lineGraphic);
|
||
mapObj.BaseMapLayer.add(lineGraphic);
|
||
|
||
symbol = new SimpleLineSymbolC({
|
||
color: [110, 154, 245],
|
||
width: 3
|
||
});
|
||
lineGraphic = new GraphicC(polyline, symbol);
|
||
routeLineGraphics.push(lineGraphic);
|
||
mapObj.BaseMapLayer.add(lineGraphic);
|
||
|
||
lastRouteLine = null;
|
||
}
|
||
|
||
var gpoint;
|
||
if ((start && firstOne) || lastOne) {
|
||
gpoint = this.createRouteHistoryPoint(point, 12, 'black');
|
||
mapObj.RoutePointLayer.add(gpoint);
|
||
routeHistoryPointGraphics.push(gpoint);
|
||
gpoint = this.createRouteHistoryPoint(point, 7, 'white');
|
||
mapObj.RoutePointLayer.add(gpoint);
|
||
routeHistoryPointGraphics.push(gpoint);
|
||
//} else {
|
||
// gpoint = this.createRouteHistoryPoint(point, 6, 'black');
|
||
// mapObj.RoutePointLayer.add(gpoint);
|
||
// routeHistoryPointGraphics.push(gpoint);
|
||
// gpoint = this.createRouteHistoryPoint(point, 5, 'white');
|
||
// mapObj.RoutePointLayer.add(gpoint);
|
||
// routeHistoryPointGraphics.push(gpoint);
|
||
}
|
||
if (lastOne) {
|
||
gpoint = this.createRouteHistoryPoint(point, 3, 'black');
|
||
mapObj.RoutePointLayer.add(gpoint);
|
||
routeHistoryPointGraphics.push(gpoint);
|
||
if (end) {
|
||
gpoint = this.createRoutePinPoint(point);
|
||
mapObj.RoutePointLayer.add(gpoint);
|
||
routeHistoryPointGraphics.push(gpoint);
|
||
}
|
||
}
|
||
return point;
|
||
}
|
||
this.clearRouteHistory = function () {
|
||
lastRouteLine = null;
|
||
routeLinePolylines = [];
|
||
for (var i = 0; i < routeLineGraphics.length; i++) {
|
||
mapObj.BaseMapLayer.remove(routeLineGraphics[i]);
|
||
}
|
||
routeLineGraphics = [];
|
||
for (var i in routeHistoryPointGraphics) {
|
||
mapObj.RoutePointLayer.remove(routeHistoryPointGraphics[i]);
|
||
}
|
||
routeHistoryPointGraphics = [];
|
||
};
|
||
this.createRouteHistoryPoint = function (point, size, color) {
|
||
var pointSymbol = new SimpleMarkerSymbolC(SimpleMarkerSymbolC.STYLE_CIRCLE, size, null, new ColorC(color));
|
||
var g = new GraphicC(point, pointSymbol);
|
||
//g.setAttributes({ "infoContent": popContent, "name": htmlencode(shape.Name), "Type": 3 });
|
||
return g;
|
||
}
|
||
this.createRoutePinPoint = function (point) {
|
||
var picSymbol = new PictureMarkerSymbolC('img/pin.png', 23, 34);//url,width,height
|
||
var g = new GraphicC(point, picSymbol);
|
||
return g;
|
||
}
|
||
this.createPlacePinPoint = function (point, place) {
|
||
var picSymbol = new PictureMarkerSymbolC('https://static.arcgis.com/images/Symbols/Shapes/RedPin1LargeB.png', 30, 34);//url,width,height
|
||
var g = new GraphicC(point, picSymbol);
|
||
g.setAttributes({ "name": place.attributes.Place_addr || place.address });
|
||
return g;
|
||
};
|
||
|
||
|
||
this.changeLineColor = function (from, to, color) {//color:[0,0,0] rgb
|
||
if (Object.keys(locationHistoryPolylines).length == 0)
|
||
return;
|
||
if (!from)
|
||
from = "1900-1-1";
|
||
if (!to)
|
||
to = "2099-12-31";
|
||
var temp = null;
|
||
var dtfrom = new Date(from.replace(/-/g, "/").replace("T", " "))
|
||
var dtto = new Date(to.replace(/-/g, "/").replace("T", " "))
|
||
for (var i in locationHistoryPolylines) {
|
||
var polyLine = locationHistoryPolylines[i];
|
||
var ldtstart = new Date(polyLine.StartTime.replace(/-/g, "/").replace("T", " "));
|
||
var ldtend = new Date(polyLine.EndTime.replace(/-/g, "/").replace("T", " "));
|
||
if (ldtstart >= dtfrom && ldtend <= dtto) {
|
||
var lineGraphic = this.createLocationHistoryLineGraphic(polyLine, color);
|
||
var oldLineGraphic = locationLineGraphics[i];
|
||
mapObj.BaseMapLayer.remove(oldLineGraphic);
|
||
locationLineGraphics[i] = lineGraphic;
|
||
mapObj.BaseMapLayer.add(lineGraphic);
|
||
temp = lineGraphic;
|
||
}
|
||
}
|
||
if (temp && color)
|
||
mapObj.MyMap.setExtent(temp.geometry.getExtent());
|
||
}
|
||
|
||
this.createLocationHistoryPoint = function (m, point) {
|
||
var picSymbol = new PictureMarkerSymbolC(point.loc.IconURL, 14, 14);//url,width,height
|
||
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b>" + htmlencode(m.Name) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_NAMECUSTOM_COLON", "Name (Custom):") + " </b> " + htmlencode(m.Name2) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_SN_COLON", "SN:") + " </b> " + m.VIN + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LATITUDE_COLON", "Latitude:") + " </b>" + point.loc.Latitude + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LONGITUDE_COLON", "Longitude:") + " </b>" + point.loc.Longitude + "<br/>";
|
||
var speed = "";
|
||
if (point.loc.Speed >= 0)
|
||
speed = point.loc.Speed.toLocaleString() + " " + point.loc.SpeedUnit;
|
||
if (speed !== "")
|
||
popContent += "<b>" + GetTextByKey("P_MV_CURRENTSPEED_COLON", "Current Speed:") + " </b>" + speed + "<br/>";
|
||
var postedspeed = "";
|
||
if (point.loc.PostedSpeed > 0)
|
||
postedspeed = point.loc.PostedSpeed.toLocaleString() + " " + (point.loc.PostedSpeedUnit === "mi/h" ? "mph" : point.loc.PostedSpeedUnit);
|
||
if (postedspeed !== "")
|
||
popContent += "<b>" + GetTextByKey("P_MV_POSTEDSPEED_COLON", "Posted Speed:") + " </b>" + postedspeed + "<br/>";
|
||
if (point.loc.Street !== "")
|
||
popContent += "<b>" + GetTextByKey("P_MV_STREET_COLON", "Street:") + "</b>" + point.loc.Street + "<br/>";
|
||
if (point.loc.LocationTimeText !== "")
|
||
popContent += "<b>" + GetTextByKey("P_MV_TIME_COLON", "Time:") + " </b>" + point.loc.LocationTimeText + "<br/>";
|
||
if (point.loc.SmartWitnessVideoUrl && point.loc.SmartWitnessVideoUrl.length > 0) {
|
||
for (var i = 0; i < point.loc.SmartWitnessVideoUrl.length; i++) {
|
||
var v = point.loc.SmartWitnessVideoUrl[i];
|
||
popContent += "<br/><a style='cursor:pointer;' onclick='openVideoDialog(\"" + encodeURIComponent(v.Value) + "\")'>" + htmlencode(v.Key) + "</a>";
|
||
}
|
||
popContent += "<br/>";
|
||
}
|
||
if (point.loc.FromSmartWitness && enableSmartWitness) {
|
||
popContent += "<br/><span class='iconvideo' style='cursor:pointer;' onclick='openRequestVideoDialog(" + m.ID + "," + point.loc.LogId + ")' title='" + GetTextByKey("P_MV_VIDEOREQUEST", "Video Request") + "'></span>";
|
||
assetHisLocations[point.loc.LogId] = point.loc;//assetHisLocations定义在asset.js中
|
||
}
|
||
|
||
var harshDriving = "";
|
||
if (point.loc.HarshDringEvent === 1)
|
||
harshDriving = GetTextByKey("P_MV_HARDACCELERATION", "Hard Acceleration");
|
||
else if (point.loc.HarshDringEvent === 2)
|
||
harshDriving = GetTextByKey("P_MV_HARDBRAKE", "Hard Brake");
|
||
else if (point.loc.HarshDringEvent === 3)
|
||
harshDriving = GetTextByKey("P_MV_HARDBTURN", "Hard Turn");
|
||
|
||
var speeding = "";
|
||
if (point.loc.SpeedingBehavior === 1)
|
||
speeding = GetTextByKey("P_MV_SPEEDINGLOWSEVERITY", "Speeding: Low Severity");
|
||
else if (point.loc.SpeedingBehavior === 2)
|
||
speeding = GetTextByKey("P_MV_SPEEDINGHIGHSEVERITY", "Speeding: High Severity");
|
||
|
||
if (speeding !== "" || harshDriving !== "") {
|
||
popContent += "<br/>";
|
||
if (harshDriving !== "")
|
||
popContent += harshDriving + "<br/>";
|
||
if (speeding !== "")
|
||
popContent += speeding + "<br/>";
|
||
}
|
||
|
||
var g = new GraphicC(point, picSymbol);
|
||
g.setAttributes({ "infoContent": popContent, "name": htmlencode(m.DisplayName), "Type": 2 });
|
||
|
||
return g;
|
||
}
|
||
|
||
this.createLocationHistoryLineGraphic = function (polyline, color) {
|
||
if (!color)
|
||
color = [225, 95, 72];
|
||
var lineSymbol = new SimpleLineSymbolC({
|
||
color: color,
|
||
width: 5
|
||
});
|
||
if (lineSymbol.width == 0) //在单独Location History页面中,width设置可能无效,原因不详
|
||
lineSymbol.width = 5;
|
||
|
||
var g = new GraphicC(polyline, lineSymbol);
|
||
|
||
return g;
|
||
}
|
||
|
||
this.showLocation = function (loc) {
|
||
this.removeLocation(loc);
|
||
if (loc.Longitude == 0 && loc.Latitude == 0) return;
|
||
var point = new PointC({
|
||
longitude: loc.Longitude,
|
||
latitude: loc.Latitude
|
||
});
|
||
point.z = 10;
|
||
|
||
var picSym = new PictureMarkerSymbolC(loc.IconUrl, 20, 20);
|
||
//picSym.setOffset(0, 25);
|
||
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b> " + htmlencode(loc.LocationName) + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LATITUDE_COLON", "Latitude:") + " </b>" + loc.Latitude + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_LONGITUDE_COLON", "Longitude:") + " </b>" + loc.Longitude + "<br/>";
|
||
popContent += "<b>" + GetTextByKey("P_MV_NOTES_COLON", "Notes:") + " </b>" + loc.Notes + "<br/>";
|
||
|
||
var g = new GraphicC(point, picSym);
|
||
g.setAttributes({ "infoContent": popContent, "name": htmlencode(loc.LocationName) });
|
||
|
||
mapObj.BaseMapLayer.add(g);
|
||
machineGraphics["LocationID" + loc.ID] = g;
|
||
}
|
||
|
||
this.removeLocation = function (loc) {
|
||
var g = machineGraphics["LocationID" + loc.ID];
|
||
if (g) {
|
||
mapObj.BaseMapLayer.remove(g);
|
||
//machineGraphics.splice("LocationID" + loc.ID, 1);
|
||
delete machineGraphics["LocationID" + loc.ID];
|
||
}
|
||
}
|
||
|
||
this.showShape = function (shape) {
|
||
this.removeShape(shape);
|
||
if (!shape || !shape.Shape) return;
|
||
|
||
var color = "#FFA500";
|
||
var gs = [];
|
||
|
||
var popContent = "<b>" + GetTextByKey("P_MV_NAME_COLON", "Name:") + " </b> " + htmlencode(shape.Name) + "<br/>";
|
||
|
||
var reg = new RegExp("\r\n", "g");
|
||
shape.Notes = shape.Notes.replace(reg, "<br/>");
|
||
reg = new RegExp("\n", "g");
|
||
shape.Notes = shape.Notes.replace(reg, "<br/>");
|
||
|
||
popContent += "<b>" + GetTextByKey("P_MV_NOTES_COLON", "Notes:") + " </b>" + htmlencode(shape.Notes) + "<br/>";
|
||
|
||
if (shape.Shape.Points && shape.Shape.Points.length > 0) {
|
||
var pointSymbol = new SimpleMarkerSymbolC(SimpleMarkerSymbolC.STYLE_CIRCLE, 6, null, new ColorC(color));
|
||
var sPoints = new MultipointC();
|
||
for (var i = 0; i < shape.Shape.Points.length; i++) {
|
||
var p = shape.Shape.Points[i];
|
||
var point = new PointC({
|
||
longitude: p.Longitude,
|
||
latitude: p.Latitude
|
||
});
|
||
sPoints.addPoint(point);
|
||
//var g = new GraphicC(point, pointSymbol);
|
||
//g.setAttributes({ "infoContent": popContent, "name": htmlencode(shape.Name), "Type": 1 });
|
||
//mapObj.BasePolygonLayer.add(g);
|
||
//gs.push(g);
|
||
}
|
||
var g = new GraphicC(sPoints, pointSymbol);
|
||
g.setAttributes({ "infoContent": popContent, "name": htmlencode(shape.Name), "Type": 3 });
|
||
mapObj.BasePolygonLayer.add(g);
|
||
gs.push(g);
|
||
}
|
||
|
||
if (shape.Shape.Polylines && shape.Shape.Polylines.length > 0) {
|
||
var line = new PolylineC({
|
||
paths: []
|
||
});
|
||
for (var i = 0; i < shape.Shape.Polylines.length; i++) {
|
||
var l = shape.Shape.Polylines[i];
|
||
line.addPath([]);
|
||
for (var j = 0; j < l.Points.length; j++) {
|
||
var p = l.Points[j];
|
||
var point = new PointC({
|
||
longitude: p.Longitude,
|
||
latitude: p.Latitude
|
||
});
|
||
line.insertPoint(line.paths.length - 1, j, point);
|
||
}
|
||
}
|
||
|
||
var lineSymbol = new SimpleLineSymbolC({
|
||
color: [255, 165, 0],//[225, 95, 72],
|
||
width: 2
|
||
});
|
||
var g = new GraphicC(line, lineSymbol);
|
||
g.setAttributes({ "infoContent": popContent, "name": htmlencode(shape.Name), "Type": 3 });
|
||
mapObj.BasePolygonLayer.add(g);
|
||
gs.push(g);
|
||
}
|
||
|
||
if (shape.Shape.Polygons && shape.Shape.Polygons.length > 0) {
|
||
var polygon = new PolygonC({
|
||
rings: []
|
||
});
|
||
for (var i = 0; i < shape.Shape.Polygons.length; i++) {
|
||
var pl = shape.Shape.Polygons[i];
|
||
polygon.addRing([]);
|
||
for (var j = 0; j < pl.Points.length; j++) {
|
||
var p = pl.Points[j];
|
||
var point = new PointC({
|
||
longitude: p.Longitude,
|
||
latitude: p.Latitude
|
||
});
|
||
polygon.insertPoint(polygon.rings.length - 1, j, point);
|
||
}
|
||
}
|
||
|
||
// Create a symbol for rendering the graphic
|
||
var fillSymbol = new SimpleFillSymbolC({
|
||
color: [255, 165, 0, 51],
|
||
outline: { // autocasts as new SimpleLineSymbol()
|
||
color: [255, 165, 0]
|
||
}
|
||
});
|
||
fillSymbol.setStyle(SimpleFillSymbolC.STYLE_SOLID);
|
||
|
||
var g = new GraphicC(polygon, fillSymbol);
|
||
g.setAttributes({ "infoContent": popContent, "name": htmlencode(shape.Name), "Type": 3 });
|
||
mapObj.BasePolygonLayer.add(g);
|
||
gs.push(g);
|
||
}
|
||
|
||
machineGraphics["ShapeID" + shape.ID] = gs;
|
||
}
|
||
|
||
this.removeShape = function (shape) {
|
||
var gs = machineGraphics["ShapeID" + shape.ID];
|
||
if (gs) {
|
||
for (var i = 0; i < gs.length; i++) {
|
||
var g = gs[i];
|
||
mapObj.BasePolygonLayer.remove(g);
|
||
//machineGraphics.splice("ShapeID" + shape.ID, 1);
|
||
delete machineGraphics["ShapeID" + shape.ID];
|
||
}
|
||
}
|
||
}
|
||
|
||
this.locateShape = function (shape) {
|
||
var gs = machineGraphics["ShapeID" + shape.ID];
|
||
if (gs && gs.length > 0) {
|
||
var level = mapObj.MyMap.getLevel();
|
||
if (level < 6)
|
||
level = 6
|
||
mapObj.MyMap.setLevel(level);
|
||
if (gs[0].geometry.type == "point")
|
||
mapObj.MyMap.centerAt(gs[0].geometry);
|
||
else
|
||
mapObj.MyMap.setExtent(gs[0].geometry.getExtent());
|
||
}
|
||
}
|
||
}
|
||
}
|