So you've just identified an area that we need to work on a bit. Ideally the MapGraphic Service should always be loaded in the catalog but it isn't yet. So you have to load it manually if it isn't in the local catalog the following code will do it. yourExtensionID is the id of your map graphic :
Map map = ApplicationGISInternal.getActiveMap();
try {
IGeoResource mapGraphicResource = null;
URL url = "">new URL(MapGraphicService.SERVICE_URL, "#" + yourExtensionID); //$NON-NLS-1$
List<IResolve> matches = CatalogPlugin.getDefault().getLocalCatalog().find(url,
new NullProgressMonitor());
if (!matches.isEmpty())
mapGraphicResource = (IGeoResource) matches.get(0);
if (mapGraphicResource == null) {
List<IService> results = CatalogPlugin.getDefault().getServiceFactory()
.acquire(url);
for( IGeoResource resource : results.get(0).members(new NullProgressMonitor()) ) {
if (resource.getIdentifier().getRef().equals(url.getRef())) {
mapGraphicResource = resource;
break;
}
}
}
if (mapGraphicResource == null)
return;
Layer layer = map.getLayerFactory().createLayer(mapGraphicResource);
map.sendCommandSync(BasicCommandFactory.getInstance().createAddLayer(layer));
} catch (MalformedURLException e) {
MapGraphicPlugin.log("", e); //$NON-NLS-1$
} catch (IOException e) {
MapGraphicPlugin.log("", e); //$NON-NLS-1$
}
The code also creates and adds the mapgraphics to a map.
Cheers,
Jesse
On 28-Oct-06, at 4:25 AM, Andy Czerwonka wrote:
I've implemented a MapGraphic extension, but I need a handle to the
MapGraphic. I see the example of creating a layer based on the
MapGraphicService URL, but nowhere do I see how to get the MapGraphic
handle. I see (in the debugger) that the MapGraphic is contained in the
IGeoResource, but I can't figure out how it's exposed.
Thanks in advance,
-andy
_______________________________________________
User-friendly Desktop Internet GIS (uDig)