Its tricky to take a LGIM targeted app and make it work with a non-LGIM schema but that's what I'm in the midst of.
First: I have most of this app configured and it searches just fine but the geometry for the addresses and parcels fall in Bertoua, Cameroon instead of Bay County, Florida. Street name searches return everything fine and in the correct location. Parcel shape is correct, but its been transposed to Africa. All searches return attributes correctly. All three services are in the same projection and are layers in the same service.
Second: We want to use the esri Streets basemap instead of one we published ourselves. With this app you are expected to build your own basemap which includes parcels and streets. Is there a way I can stick a bit into the body of \widgets\mapSettings\mapSettings.js to drop my parcels in on top of the basemap using the same service that's being searched by the search function?
Solved! Go to Solution.
It did end up being in baseMapGallery.js. I added an ArcGISDynamicMapServiceLayer after line 60. I watched the dev console in Chrome and saw that my service was adding before the basemaps regardless of where I put it in mapSettings.js so I figured it was in baseMapGallary.js. After a lot of looking at that code I got it inserted in the right spot. Headed over to the ideas page to suggest this as an enhancement.
Hi Chris,
It's recommended to migrate your data to the Local Goverment Information Model. I'm not suggesting to adopt this model for your daily work, but you can automate the migration using the Delete Rows and Append tool in ModelBuilder. Not only will this make the Land Use Public Notification app easier to stand up, but it will make any future app you stand up a lot easier and faster. I believe if your data is migrated into the LGIM, you won't experience the issues you mention above. The majority of them sound like projection issues, so if you use the LGIM, make sure you have it projected to the coordinate system of the data you are going to load in.
As for adding your parcels on top of one of the basemaps, this would be difficult. You would need to dig into the code and configure an ArcGISDynamicMapServiceLayer that uses your published parcels layer.
I really do not want to have to maintain two parcel, address, and road datasets just so this app this work. All the searches work fine and I added the service into the code where the basemap is loaded. If I load the basemap first the search shows results in Cameroon, if I load the service layer first searches show in the correct place but the basemap doesn't appear at all. I know its a projection issue and I remember my boss having an issue like this with the FLEX API a few years ago but we don't remember what the solution was in that case. I'm going to try changing the projection on that service and see if that helps.
Changing the dataframe projection to Web Mercator fixed the location issue but I cant get the service to show up on top of the basemap. If I switch the basemaps really fast I can see the parcels below the basemap before the next one draws. Slowly solving this.
Where do you have the parcel service added in your config.js file? Would you be able to provide a screen shot?
I didnt add it to my config.js. I added it to mapSettings.js. Im new to JS so I just looked for the file controlling the body of the app, looked for where the basemap was added and stuck it in at that point.
I think its in baseMapGallery.js that's the problem. Pushing the button to toggle basemaps hides all layers and sets the next basemap as visible. I'm guessing at least. It looks like it should only hide things in config.js that are in the basemap list.
EDIT: I'm revising this assumption. I think the problem is mapSettings.js is pushing the parcels to the back and I cant figure out why or how. App is at Public Notification.
It did end up being in baseMapGallery.js. I added an ArcGISDynamicMapServiceLayer after line 60. I watched the dev console in Chrome and saw that my service was adding before the basemaps regardless of where I put it in mapSettings.js so I figured it was in baseMapGallary.js. After a lot of looking at that code I got it inserted in the right spot. Headed over to the ideas page to suggest this as an enhancement.