4th Step

Rund um MS-MapPoint

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11297
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

4th Step

Beitrag von AUGE_OHR » Di, 07. Okt 2008 1:54

hi,

Nachdem wir unsere Route nun durch Calculate() berechnet haben stellt sich die Frage wie bekomme
ich nun die Ergebnisse "raus" ?

Eine Möglichkeit ist das ausdrucken der Route :

Code: Alles auswählen

Methode objMap.Printout()
//
// Route muss vor dem Drucken "berechnet" worden sein !
//
IF ::oAXControl:ActiveMap:ActiveRoute:IsCalculated()
ELSE
   ::oStatus:Setcaption( "bitte warten ... Route wird berechnet" )
   ::oAXControl:ActiveMap:ActiveRoute:Calculate()
ENDIF
...
oApp:ButtonOK:activate := {|| ::oAXControl:ActiveMap:PrintOut(;
                              OutputFileName          ,;
                              Title                   ,;
                              oApp:nCopies:getdata()  ,;
                              oApp:nPrintArea         ,;
                              oApp:nQuality           ,;
                              oApp:nOrientation       ,;
                              oApp:lCollate           ,;
                              oApp:lLegend            ,;
                              oApp:lOverview          ,;
                              oApp:lFaxable )         ,;
                              lExit := .T.               }
Mit nPrintArea kann man nun mittels der GeoPrintArea Konstanten auswählen was gedruckt
werden soll

Code: Alles auswählen

geoPrintMap                0 
geoPrintDirections         1 
geoPrintTurnByTurn         2 
geoPrintStripMaps          3 
geoPrintSelectedArea       4 
geoPrintHighlightedPlaces  5 
geoPrintFullPage           6 
Frage an die Experten : warum geht 4 und 5 bei mir nicht bzw. was muss ich als Voraussetzung
machen damit er nicht abstürzt ?

Eine weitere Anforderung könnte es sein die neu berechnete Route zurück in die DBF zu schreiben.
Hierzu muss man sich erstmal ansehen was MapPoint einem zurückgibt

Code: Alles auswählen

//
// wenn man die SUB-Anweisungen auch haben möchte muss man
// die "Expanded" Property setzten
//
::oAXControl:ActiveMap:ActiveRoute:Directions:SetProperty(;
                                                "Expanded", geoTrue )
//
iMax := ::oAXControl:ActiveMap:ActiveRoute:Waypoints:count()
FOR i = 1 TO iMax
   cName := ::oAXControl:ActiveMap:ActiveRoute:Waypoints:Item(i):Name
   AADD(aWayPoint,cName)
   DO_Sub_Routine()
NEXT
nun habe ich also alle Waypoints in ein Array aufgenommen. Aber wie sieht nun ein Element aus:

Code: Alles auswählen

Berger Vorstadt, 86609 Donauwörth
Margot-Kalinke-Straße, 80939 München
Karl-Böhm-Straße, 85598 Vaterstetten
Ledererstraße 21, 80331 München
Schwanthalerstraße 7, 80336 München
Blutenburgstraße 53, 80636 München
Pfeuferstraße 33, 81373 München
Münchnerstraße 2, 82061 Neuried
Gymnasiumstraße, 88400 Biberach an der Riss
... sind übrigens alles China Restaurants wo man lecker essen kann ... (Schleichwerbung ...)

Tja und obwohl er ja nun was gefunden hatte muss die "Schreibweise" nicht unbedingt mit unserer
DBF übereinstimmen sodass ein SEEK praktisch nicht möglich ist.

Nun habe ich "Glück" das die Kunden meistens nicht in der selben PLZ / Strasse sind sodass mit

Code: Alles auswählen

LAND+STRZERO(PLZ,5)+UPPER(SUBSTR(STRASSE,1,3))
ich meisten schon einen 99,9% Treffer bekomme.

Ab MapPoint 2006 gibt es wohl auch noch die Möglichkeit des Export zu Pocket-PC oder Smart-
Phone Geräten und mittels GPS und Speech API kann man dann auch ein eigenes "Navi" bauen :)

Fortsetztung folgt ... Thema Parameter für die Optimize() Methode
gruss by OHR
Jimmy

Antworten