spacer1
spacer2 1_1 1_2
2_1
 Subscribe
 The MP2K Update!
 
 
 
 Magazine
Front Cover
What's New
Articles
Toolbar
News
Sample Data
Gallery
Advertise
About
 Features
MapPoint 2006
Press Releases
MapPoint Forums
Companies
Link to MP2Kmag
Wish List
MapPoint Trial
Authors
 Sponsors
 Order

MapPoint 2006

Programming MapPoint in .NET

MapPoint Book

  Spatial Community
ViaVirtualEarth
SVG Tutorials
MapPoint

Map Visitors

 Direct Media

Small business IT
Connect, the IT support specialists, are the market leader for small and medium sized businesses in the UK. Give us a call today!

ink toner
Get ink toner online from specialists. Get ink toner from us! We offer you the top brands for top value. Free delivery, Freephone. Call us!

Flights to Funchal
Magnificent Madeira provides panoramic views for you. See for yourself and book cheap flights to the capital, Funchal.

Cheap Holidays in Greece
Book cheap holidays in Greece and relax on the beach. Book online with On The Beach to book a brilliant holiday. High value holidays for low costs!

property for sale in Bulgaria
Visit online for details of beautiful Bulgarian property available for sale. Choice of beach or ski resort.

Miami Flights
Select Miami in our online flight supersearch and compare prices from the airline carriers. Visit Deal Checker online now!

Larnaca
Larnaca- one of Cyprus' main seaside resorts has beautiful crystal clear seas, a good range of restaurants and ancient historical sites to name a few!

  ARTICLES  


MapPoint Automation with C/C++ - Part 1

This is the first of three articles by Sergey Kostrov on automating MapPoint with C/C++ starting with a simple C/C++ application.

A Simple C/C++ Application

As a C++ software developer I’m very surprised by the lack of documentation from Microsoft about MapPoint Automation with C/C++. It looks like Microsoft wants to “move” everybody to the “.NET Universe” and completely ignores some reality of the world when some C++ programmers don’t want to give up…

On MP2Kmag there are already a couple of articles related with automation of MapPoint from an application written in C++. In Part 1 of my article I would like to demonstrate what should be done to initialize MapPoint and then how to use MapPoint’s COM API.

I assume that you use Microsoft Visual C++ and to simplify development I also recommend using Type Library mpna82.tlb because it gives lots of advantages and increases productivity. With that approach you don’t have to do low-level COM programming. If you’ve installed the MapPoint application to a default folder you can find mpna82.tlb file at the C:\Program Files\Microsoft MapPoint folder.

The main goal of this article is to help you at the beginning and as soon as basic things are clear all the rest is easier. This article is not intended to teach you how to do C/C++ programming or what OLE Automation is, and should be considered as a set of recommendations.

Here are source codes for a simple C/C++ application that initializes MapPoint, finds an address, puts pushpin and saves a map on the hard drive.

///// ComInterfaces.h /////

#ifndef _COM_INTERFACES_H
#define _COM_INTERFACES_H

#pragma once
#pragma pack( push, ComInterfaces )
#undef EOF
#import "C:\Program Files\Microsoft MapPoint\mpna82.tlb" no_implementation
#pragma pack( pop, ComInterfaces )

#endif

///// ComInterfaces.cpp /////

#include "ComInterfaces.h"

#pragma once
#pragma pack( push, ComInterfaces )

#import "C:\Program Files\Microsoft MapPoint\mpna82.tlb" implementation_only

#pragma pack( pop, ComInterfaces )

///// MapPointApp.cpp /////

#include "ComInterfaces.h"
…
MapPoint::_ApplicationPtr g_pMapPoint = NULL;
…
void main( void )
{
CoInitialize( NULL );

g_pMapPoint.CreateInstance( "MapPoint.Application" );
g_pMapPoint->Visible = true;
g_pMapPoint->PutWindowState( geoWindowStateNormal );
g_pMapPoint->PutCaption( "MapPoint 2004 is in Automation Mode!" );
g_pMapPoint->PutUnits( geoKm );

_MapPtr myMapPtr = g_pMapPoint->ActiveMap;

FindResultsPtr resultsPtr = myMapPtr->FindAddressResults
(
	“400 Coronado Dr”, “Denton”, "", “TX”, “76209”, geoCountryDefault
);

VARIANT idx;
VariantInit( &idx );
V_VT(&idx) = VT_I4;
V_I4(&idx) = 1;
LocationPtr locAddressPtr = resultsPtr->GetItem( &idx );
PushpinPtr pinAddressPtr = myMapPtr->AddPushpin( locAddressPtr, "Your property is here" );

pinAddressPtr->PutSymbol( 57 );					// Red triangle ( big )

pinAddressPtr->BalloonState = geoDisplayBalloon;
pinAddressPtr->Highlight = true;
locAddressPtr->GoTo();

myMapPtr->ZoomIn();

myMapPtr->SaveAs( "C:\\$MapIsHere", geoFormatHTMLMapAndDirections, false );

pinAddressPtr->Highlight = false;
pinAddressPtr->BalloonState = geoDisplayNone;
pinAddressPtr->Delete();

myMapPtr->Saved = true;

g_pMapPoint->Quit();
…
CoUninitialize();
}

A few comments and recommendations

  • As you can see source codes are very straightforward and even if you don’t have any experience with C/C++ programming it takes little efforts to study the example;
  • Take a look at two compiler-generated files mpna82.tlh and mpna82.tli. These two files are an invaluable source of the information because all interfaces, smart pointer typedef declarations and enumerations described there. It is very useful to run this example under the control of the Visual C++ Debugger in order to see how it actually works;
  • In the example we save a map on the drive C: in the folder $MapIsHere and MapIsHere.htm file can be used to view the map in an Internet browser. Enclosed are also two pictures that give you an idea how the results look like in automated MapPoint and Internet Explorer:


(click on the image to view the full screenshot)


(click on the image to view the full screenshot)

Discuss this story in the forum.

Author: Sergey Kostrov
Email: sergeykostrov(AT)hotmail.com
URL: http://www.zaio.com/
Sergey Kostrov is a C++ / Database software developer with Zaio Corp. located in Calgary, Alberta, Canada.



Google
 
MP2Kmag Internet


 Recent Discussion
-Virtual Earth Case Study: Regional Government Alliance Builds Connections with Integrated Mapping
-Virtual Earth on CSI: New York
-Helping out after the China quakes
-Coastal Boundaries
-Mapping Earthquakes in China
-An invalid argument was encountered.
-Navman Wireless Oem Solutions Enhances Leading Line Of Gps Receiver Modules
-T-mobile UK
-Virtual Earth and OpenLayers
-Reminder: Microsoft Virtual Earth Partner Webinar and Offer for Free Training
-Virtual Earth Quarterly Technical Briefing
-Customize User Page
-Information about area
-Territory information
-Gps task pane in ActiveX
-Worldwide Telescope Now Available!
-c++ - setting the color of a line
-Initial Costa Rica MapServer map is up & running!
-Satellite Images of Myanmar Cyclone Damage
-Virtual Earth Loyalist: Aerial View
-Leaving messages on the Virtual Earth for Government blog site
-Virtual Earth Webcast: Adding Mapping Capabilities to your Applications with Virtual Earth
-Get new Lat & Lon from speed
-Integrating Virtual Earth Maps and Excel 2007
-Zillow.com
 Resources
Browse GIS books and periodicals
Best Car Contract Hire Lease Save
Find a MapPoint Partner or Consultant
Real Estate Thornbrook Subdivision


Want Your Site To Appear Here?

   © 1999-2008 MP2K. Questions and comments to: website@mp2kmag.com
  Microsoft and MapPoint 2002/2004/2006 are either trademarks or registered trademarks of Microsoft.

• Replacement Cordless Phone Batteries from DSMiller
Improve your career with a computer degree LocalEDU.com
• Tim Cohn's Marketing Strategy Consultancy
• Buy Toner, Ink Cartridges & Drums at Marquee Office Solutions
• Looking for Dry Erase Boards? See Dry Erase Boards
• 5339 - We Know Bikes: Road Bikes / Triathlon Bikes / Mountain Bikes / BMX Bikes
• Buy Your Car Used Cars, Car Lease and Contract Hire