How to: Manually Process Location Information Received From Bing Geocode Service
- 2 minutes to read
To manually generate map items for received GIS data, do the following.
- Set the InformationDataProviderBase.GenerateLayerItems property to false.
- Handle the Geocode data received event of the Bing geocode data provider (BingGeocodeDataProvider.LocationInformationReceived).
- In the event handler, implement map item generation based on information stored in the GeocodeRequestResult.Locations array of LocationInformation objects.
using DevExpress.XtraMap;
using System.Windows.Forms;
namespace WinForms_MapControl_InformationLayer {
public partial class Form1 : Form {
InformationLayer GeocodeLayer { get { return (InformationLayer)mapControl1.Layers["GeocodeLayer"]; } }
BingGeocodeDataProvider GeocodeProvider { get { return (BingGeocodeDataProvider)GeocodeLayer.DataProvider; } }
public Form1() {
InitializeComponent();
GeocodeProvider.LocationInformationReceived += GeocodeProvider_LocationInformationReceived;
}
void GeocodeProvider_LocationInformationReceived(object sender, LocationInformationReceivedEventArgs e) {
if ((e.Cancelled) && (e.Result.ResultCode != RequestResultCode.Success)) return;
GeocodeLayer.Data.Items.Clear();
foreach (LocationInformation locationInformation in e.Result.Locations)
GeocodeLayer.Data.Items.Add(new MapCallout() {
Location = locationInformation.Location,
Text = locationInformation.DisplayName
});
}
}
}