2011-07-08 7 views
1

C#を使用してMappointにアドレスのリストを追加します。MapPoint 2011 FindAddressダイアログ(.NET)

foreach (Stop stop in _stops) 
       _route.Waypoints.Add(_mpMap.FindAddressResults(stop.Street, stop.City, "", "Oregon", stop.Zip)[1]); 

時々フォーマットが間違っているとそのため私は、クラッシュやcomplected間違ったアドレスのいずれかを取得取り組みます。

mappoint(アプリケーション)では、場所を検索することができます。また、mappointが複数見つかった場合や住所を間違えた場合は、検索が開き、検索やアドレスの追加ができます。

例:入力したアドレスが不完全にフォーマットされていますが、mapointはイースリー通常のフォーマットと完全なアドレスを見つけることができる方法を enter image description here

注意してください。場合によってはさらに多くの結果があり、その場合は手動で選択する必要があります。質問:どうですか?後で

を追加しました:

が、私は方法ShowFindDialogとの対話自体を呼び出すことができると私は.Countパラメータ

MapPoint.FindResults results = _mpMap.FindAddressResults(stop.Street, stop.City, "", "Oregon", stop.Zip); 
MessageBox.Show("Found " + results.Count + " results"); 

で見出された結果の数を取得することができます。しかし、私は方法を見つけることができませんアドレスを指定するにはShowFindDialog

答えて

2

あなたはFindAddressResultsを酷使しています。これは単純な配列(どのように扱っているか)を返すのではなく、FindResultsコレクションを返します。 FindResultsコレクションには、 "ResultsQuality"というプロパティが含まれています。これはMapPointに付属のヘルプファイルで完全に文書化されていますが、でなければなりません。

ResultsQualityプロパティは、GeoFindResultsQuality列挙体に設定されています。 geoAllResultsValid(0)またはgeoFirstResultGood(1)を確認する必要があります。他の値は結果もあいまいな結果も示さない。

ここではドキュメントからVB6の例です:

Sub AddPushpinToGoodFindMatch() 

Dim objApp As New MapPoint.Application 
Dim objFR As MapPoint.FindResults 

'Set up the application 
objApp.Visible = True 
objApp.UserControl = True 

'Get a FindResults collection 
Set objFR = objApp.ActiveMap.FindResults("Seattle") 

'If the first result is a good match, then use it 
If objFR.ResultsQuality = geoFirstResultGood Then 
    objApp.ActiveMap.AddPushpin objFR.Item(1) 
Else 
    MsgBox "The first result was not a good match." 
End If 

End Sub 

FindResults()は同じFindResultsクラスを返す古い方法であるが、(あなたがやっているとして)FindAddressResultsを使用することが一般的に行うにははるかに良いことです。


補遺:この一般的な問題としては(おそらく盲目的に貼り付け&を切断されたMapPointのドキュメントで不正なサンプルコードに)、私は私の「MapPointの上、using the FindResults collection correctlyについての記事を書いた、そのような共通の問題ですHowTo "ページ。

関連する問題