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)