ThinkGeo.com    |     Documentation    |     Premium Support

An Item With The Same Key Has Already Been Added

Hi. 


There is problem. Code below where i add two layers to map. First LINE_KUCE - (Streets), Second (LINE_PROSPEKT) - prospekt. But map displace that  An item with the same key already been added. I there is fields by name "NAME" in my oracle table. What is wrong? If i comment lines where i add DefaultTextStyle map display the layers without labels, but when i dont cooment map displays An Item With The Same Key Has Already Been Added  error.

Please help to solve this problem.



//Kuce



            OracleFeatureLayer kuce = new OracleFeatureLayer(


connectString1, "LINE_KUCE", "MI_PRINX");

            kuce.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.LocalRoad4;

            kuce.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level15;



            kuce.ZoomLevelSet.ZoomLevel15.DefaultLineStyle = LineStyles.LocalRoad3;

            kuce.ZoomLevelSet.ZoomLevel15.DefaultTextStyle = TextStyles.LocalRoad3("NAME");

            kuce.ZoomLevelSet.ZoomLevel15.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level17;



            kuce.ZoomLevelSet.ZoomLevel17.DefaultLineStyle = LineStyles.LocalRoad2;

            kuce.ZoomLevelSet.ZoomLevel17.DefaultTextStyle = TextStyles.LocalRoad2("NAME");

            kuce.ZoomLevelSet.ZoomLevel17.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level19;



            kuce.ZoomLevelSet.ZoomLevel19.DefaultLineStyle = LineStyles.LocalRoad1;

            kuce.ZoomLevelSet.ZoomLevel19.DefaultTextStyle = TextStyles.LocalRoad1("NAME");

            kuce.ZoomLevelSet.ZoomLevel19.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;



            Map1.StaticOverlay.Layers.Add(kuce);



            

            //Prospekt



            OracleFeatureLayer propekt = new OracleFeatureLayer(connectString1, "LINE_PROSPEKT", "MI_PRINX");

            propekt.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.MajorRoad4;

            propekt.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.MajorRoad4;

            propekt.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level15;



            propekt.ZoomLevelSet.ZoomLevel15.DefaultLineStyle = LineStyles.MajorRoad3;

            propekt.ZoomLevelSet.ZoomLevel15.DefaultTextStyle = TextStyles.MajorRoad3("NAME");

            propekt.ZoomLevelSet.ZoomLevel15.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level17;



            propekt.ZoomLevelSet.ZoomLevel17.DefaultLineStyle = LineStyles.MajorRoad2;

            propekt.ZoomLevelSet.ZoomLevel17.DefaultTextStyle = TextStyles.MajorRoad2("NAME");

            propekt.ZoomLevelSet.ZoomLevel17.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level19;



            propekt.ZoomLevelSet.ZoomLevel19.DefaultLineStyle = LineStyles.MajorRoad1;

            propekt.ZoomLevelSet.ZoomLevel19.DefaultTextStyle = TextStyles.MajorRoad1("NAME");

            propekt.ZoomLevelSet.ZoomLevel19.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;



            Map1.StaticOverlay.Layers.Add(propekt);

Hi Vugar, 
  
 Could you please check the tables in your oracle database to see if there are duplicated columns exist in the table? The duplicated columns may cause this exception. 
  
 Any more information is appreciated. 
  
 Thanks, 
  
 Sun  


Hi. But it is impossible to create columns with same name:)


Columns of my oracle tables;


 


 



    
    
        
            Column Name
            Data Type
            Nullable
            Data Default
            COLUMN ID
            Primary Key
            COMMENTS
        
        
            MI_PRINX
            NUMBER(10,0)
            No
             
            4
            1
             
        
        
            LABEL
            NVARCHAR2(400 CHAR)
            Yes
             
            1
             
             
        
        
            ID
            NUMBER(16,0)
            Yes
             
            2
             
             
        
        
            MI_STYLE
            VARCHAR2(254 BYTE)
            Yes
             
            3
             
             
        
        
            GEOLOC
            SDO_GEOMETRY
            Yes
             
            5
             
             
        
        
            STREET_ID
            NUMBER
            Yes
             
            6
             
             
        
        
            NAME
            NVARCHAR2(400 CHAR)
            Yes
             
            7
             
             
        
        
            TYPE
            NUMBER
            Yes
             
            8
             
             
        
        
             
             
             
             
             
             
             
        
    


Great "thanks" for supporting of "Map Suite Web Edition 3.0". 



I have found this bug myself.

If there are two or more schemas in your oracle database where every schema contain the tables with same names this bug occurs.



OK, we will do more research about this issue because we have just fixed a schema issue in the postgre feature layer, but we are not sure if there is same issue in the Oracle feature layer. We will let you know if there is any progress about this issue. 
  
 Any more questions please let me know. 
  
 Thanks, 
  
 Sun 


Hi, 
  
 We have a similar problem… 
 We use MultipleShapeFileFeatureLayer to add layers… 
 We use InMemoryFeatureLayer to add features too…  
  
 once the map loads… on the tile it shows the text message in black "An Item With The Same Key Has Already Been Added"… 
 do you have any idea what could have caused it? 
  
 Thanks! 
  
 Roson 


Lishan, 
  
 We can’t recreate your problem when using MultipleShapeFileFeatureLayer and InMemoryFeatureLayer. But using InMemoryFeatureLayer to add two or more features with the same key, it will throw an exception message “An Item With The Same Key Has Already Been Added”, this text message will not be printed on the tile. 
  
 Please provide us your source code, so we can handle this problem quickly. 
  
 Any more questions please let me know.  
  
 Thanks, 
 Howard

Hi Howard,


The code where we are using InMemoryFeatureLayer is attahced. Thanks a lot! 


Roson


 



1619-code_memlayer.txt (4.08 KB)

Roson, 
  
 We create a sample using your code with the data of USA POI (including hospital, church, and golf). We add these three shape files into MultipleShapeFileFeatureLayer, and then add the three types of interesting places into three InMemoryFeatureLayers using different styles depend on some ColumnValues. We still can’t recreate your issue. Our code is the same as you posted in the last reply. So could you supply us with the entire code and data, if it’s too large, please send to support@thinkgeo.com and ask them to forward to me. 
  
 Any more questions please let me know.  
  
 Thanks, 
 Howard

Was anymore done with this?   I have the same problem - with a simple, single layer example.


What can I do to eliminate this?      Thank you.



Hi, Frank 
  
 I don’t know what problem you mean. The bug for OracleFeatureLayer has been fixed in the lastes DLLs package. You could get the latest daily build from the link below:  
 helpdesk.thinkgeo.com  
 Please correct me if I misunderstand your meaning. 
  
 Thanks, 
 Khalil

Khalil,


I am not working with the OracleFeatureLayer provider.  I'm simply - with a handful of lines of code - loading a layer,


and randomly getting that error when I run.  



Frank, 
  
 Sorry for misunderstanding your meaning. I don’t know how you load a layer and add it to map control. Please refer to the DisplayASimpleMap sample in our installed samples which you could find it’s souce code in “Samples\GettingStarted\DisplayASimpleMap.aspx”. If you still have any problem, please provide your code for us to address it. 
  
 Thanks, 
 Khalil

Code and files were sent. 
  
 By the way, this problem went away - as soon as I started using Map Suite to build idx files for the data. 
  
 There has to be a bug related to reading shape files that don’t have idx’s.

 


Frank,
 
We test reading shape files without .idx files, and it proves that all works fine. Please make sure set the “RequireIndex” property of ShapeFileFeatureSource to false like below:
 
 
ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource();
featureSource.RequireIndex = false;
 
Thanks,
 
Johnny