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)