首页 / 浏览问题 / 云GIS / 问题详情
怎样增加geometry
8EXP 2017年01月16日

***********************************************************************************************

目前要吧我的数据外表的内容添加geometry  怎么处理 是在ideskTop中设置什么吗?还是在我的数据库里面设置?

2 个回答

如果是指把外表的字段通过iServer查询添加到返回的Geometry对象里,可以设置合适的条件进行关联查询,
http://blog.csdn.net/supermapsupport/article/details/49998205

http://blog.csdn.net/supermapsupport/article/details/52572791

如果是指把外表里保存的坐标转化成Geometry对象,可以查询到坐标后,new 对应的Geometry对象
1,603EXP 2017年01月16日
你说的关联插入什么意思?我外表里面根本没有坐标怎么转化呢?
现在我的图没出来是因为我看到例子中有这个geometry坐标对象,所以我想解决的是可以在我的数据中加上固定的geometry对象,或者其他方法?
请详细描述问题,看不懂了
是指没返回Geometry?查询的表是纯属性表?纯属性表是没法查回来Geometry的,可以查询带Geometry的表和你的业务表关联,若纯属性表记录的是点位置,需要自己new 点
1,603EXP 2017年01月16日
是纯属性的


<link href='./css/bootstrap.min.css' rel='stylesheet' />
<link href='./css/bootstrap-responsive.min.css' rel='stylesheet' />
<script src='./libs/SuperMap.Include.js'></script>
<script type="text/javascript">
var host = document.location.toString().match(/file:\/\//)?"http://localhost:8090":'http://' + document.location.host,
url1=host + "/iserver/services/map-test3/rest/maps/map",
url2=host + "/iserver/services/data-data/rest/data";
//http://127.0.0.1:8090/iserver/services/data-data/rest/data
///iserver/services/data-jingjin/rest/data
var map, layer, themeLayer;

function init(){
// 检测是否支持 Canvas
if(!document.createElement('canvas').getContext){
alert("您的浏览器不支持 Canvas,请升级!");
return;
}

map = new SuperMap.Map("map",{controls: [
new SuperMap.Control.LayerSwitcher(),
new SuperMap.Control.ScaleLine(),
new SuperMap.Control.Zoom(),
new SuperMap.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
})]
});
layer = new SuperMap.Layer.TiledDynamicRESTLayer("yunzhuli_test", url1, {transparent: true, cacheEnabled: true}, {maxResolution:"auto"});
layer.events.on({"layerInitialized":addLayer});

// 定义 Range 分段专题图层
themeLayer = new SuperMap.Layer.Range("ThemeLayer");
themeLayer.setOpacity(0.8);

// 图层基础样式
themeLayer.style = {
    shadowBlur: 16,
    shadowColor: "#000000",
    fillColor: "#FFFFFF"
};

// 开启 hover 高亮效果
themeLayer.isHoverAble = true;
// hover高亮样式
themeLayer.highlightStyle = {
    stroke: true,
    strokeWidth: 4,
    strokeColor: 'blue',
    fillColor: "#00EEEE",
    //shadowBlur: 6,
    //shadowColor: "#000000",
    //shadowOffsetX: 6,
    //shadowOffsetY: 6,
    fillOpacity: 0.8
};

// 用于范围分段的属性字段名称
themeLayer.themeField = "dbqk_id";
// 风格数组,设定分段范围对应的样式
themeLayer.styleGroups=[
    {
        start: 1,
        end: 1,
        style:{
        color: '#FDE2CA'
        }
    },
    {
        start: 2,
        end: 2,
        style:{
        color: '#FACE9C'
        }
    },
    {
        start: 3,
        end: 3,
        style:{
        color: '#F09C42'
        }
    },
    {
        start: 2,
        end: 2,
        style:{
        color: '#D0770B'
        }
    },
    {
        start: 3,
        end: 3,
        style:{
        color: '#945305'
        }
    }
]

// 注册 mousemove 事件
//themeLayer.on("mousemove", evn);
}

function addLayer() {
    map.addLayers([layer, themeLayer]);
    map.setCenter(new SuperMap.LonLat(12080677, 4591416), 1);
}

//获取 feature 数据, 专题图的数据必须是 SuperMap.Feature.Vector
function addThemeLayer() {
    clearLayer();

    var getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams;

    getFeatureParam = new SuperMap.REST.FilterParameter({
        name: "yunzhuli_test",
        attributeFilter: "dbqk_id<5",
        fields:["dbqk_id"]
    });
    getFeatureBySQLParams = new SuperMap.REST.GetFeaturesBySQLParameters({
        queryParameter: getFeatureParam,
        toIndex: 500,
        datasetNames:["yunzhuli_test:zl_gxslx_pa_prov_1701"]
    });
    getFeatureBySQLService = new SuperMap.REST.GetFeaturesBySQLService(url2, {
    eventListeners: {"processCompleted": processCompleted, "processFailed": processFailed}});

        getFeatureBySQLService.processAsync(getFeatureBySQLParams);
}
function processCompleted(getFeaturesEventArgs) {
    console.log(getFeaturesEventArgs);
    var result = getFeaturesEventArgs.result;
    if (result && result.features) {
        themeLayer.addFeatures(result.features);
        console.log(234);
}

//显示图例
    document.getElementById("mapLegend").style.display = "block";
}
function processFailed(e) {
    alert(e.error.errorMsg);
}
function clearLayer() {
    document.getElementById("mapLegend").style.display = "none";
    document.getElementById("infoBox").style.display = "none";
    //先清除上次的显示结果
    themeLayer.clear();
}

// 更新显示数据
function updateData(){
    var feas = themeLayer.features;
for(var i = 0, len = feas.length; i < len; i++){
    var fea = feas[i];
    fea.attributes.dbqk_id = getRandomNumber(1, 5, 5);
}
    themeLayer.redraw();
}

// 获取范围内的随机数
// min - 范围下限
// max - 范围上限
// decimalNum - 返回结果的小数位数。如果为 0,返回整数。
function getRandomNumber(min, max, decimalNum){
    var rNum = parseInt(min+Math.random()*(max-min));

if(decimalNum){
    if(!isNaN(decimalNum))
    {
        return rNum;
    }
    else
    {
        decimalNum = parseInt(decimalNum);
    }

if(decimalNum === 0){
return Math.round(rNum);
}
else
{
return parseFloat(rNum).toFixed(decimalNum);
}
}
else{
return rNum;
}
}

//事件处理,控制信息框数据显示
function evn(e){
if(e.target && e.target.refDataID){
document.getElementById("infoBox").style.display = "block";
var fid = e.target.refDataID;
var fea = themeLayer.getFeatureById(fid);
if(fea){
document.getElementById("infoContent").innerHTML = "";
//document.getElementById("infoContent").innerHTML += "ID: " + fea.attributes.SMID + "<br/>";
//document.getElementById("infoContent").innerHTML += "行政区名:" + fea.attributes.NAME + "<br/>";
document.getElementById("infoContent").innerHTML += "人口密度:" + parseFloat(fea.attributes.dbqk_id) + "<br/>";
}
}
else{
document.getElementById("infoContent").innerHTML = "";
document.getElementById("infoBox").style.display = "none";
}
}
</script>

纯属性的话是没有Geometry的,范例查询的不是纯属性的所以有Geometry
恩恩 您能告诉我解决的办法吗?
你可以先进行关联查询,查询完了再把返回的数据添加到专题图图层里面。
...