Bing Maps Ajax Controls Dk 70

302
Contents In This Section............................................................................................................................ 11 See Also ..................................................................................................................................... 12 Getting Started with the 7.0 Map Control ...................................................................................... 12 Create a Bing Maps Account and Get a Key ............................................................................. 12 Get Familiar with the Bing Maps AJAX 7.0 Control ................................................................... 12 What's New in the AJAX Map Control ........................................................................................... 12 New Features ............................................................................................................................. 12 Developing with the 7.0 Map Control............................................................................................. 13 In This Section............................................................................................................................ 13 Loading the AJAX Map Control ..................................................................................................... 13 Displaying the Default Map ........................................................................................................ 13 Customizing the Map When Loading ......................................................................................... 16 Example ..................................................................................................................................... 16 Setting Map Control Parameters ................................................................................................... 17 Parameters ................................................................................................................................. 17 Setting Parameters..................................................................................................................... 18 See Also ..................................................................................................................................... 18 Changing the Map View ................................................................................................................ 19 Setting the Initial Map View ........................................................................................................ 19 Changing the Map View ............................................................................................................. 20 Adding Entities to the Map ............................................................................................................. 22 Adding Single Entities to the Map .............................................................................................. 22 Adding a Pushpin .................................................................................................................... 22 Adding a Shape ...................................................................................................................... 25 Adding Multiple Entities to the Map ............................................................................................ 26 Changing Entities on the Map .................................................................................................... 27 Customizing Your Pushpins .......................................................................................................... 30 Customizing Your Pushpin Icon ................................................................................................. 30 Creating a Pushpin Infobox ........................................................................................................ 31 Displaying Location Search Results Using the REST Services .................................................... 33 Initialize the Map ........................................................................................................................ 34 Add Controls............................................................................................................................... 35 Make a Geocode REST Request ............................................................................................... 35

Transcript of Bing Maps Ajax Controls Dk 70

Page 1: Bing Maps Ajax Controls Dk 70

Contents

In This Section ............................................................................................................................ 11

See Also ..................................................................................................................................... 12

Getting Started with the 7.0 Map Control ...................................................................................... 12

Create a Bing Maps Account and Get a Key ............................................................................. 12

Get Familiar with the Bing Maps AJAX 7.0 Control ................................................................... 12

What's New in the AJAX Map Control ........................................................................................... 12

New Features ............................................................................................................................. 12

Developing with the 7.0 Map Control............................................................................................. 13

In This Section ............................................................................................................................ 13

Loading the AJAX Map Control ..................................................................................................... 13

Displaying the Default Map ........................................................................................................ 13

Customizing the Map When Loading ......................................................................................... 16

Example ..................................................................................................................................... 16

Setting Map Control Parameters ................................................................................................... 17

Parameters ................................................................................................................................. 17

Setting Parameters..................................................................................................................... 18

See Also ..................................................................................................................................... 18

Changing the Map View ................................................................................................................ 19

Setting the Initial Map View ........................................................................................................ 19

Changing the Map View ............................................................................................................. 20

Adding Entities to the Map ............................................................................................................. 22

Adding Single Entities to the Map .............................................................................................. 22

Adding a Pushpin .................................................................................................................... 22

Adding a Shape ...................................................................................................................... 25

Adding Multiple Entities to the Map ............................................................................................ 26

Changing Entities on the Map .................................................................................................... 27

Customizing Your Pushpins .......................................................................................................... 30

Customizing Your Pushpin Icon ................................................................................................. 30

Creating a Pushpin Infobox ........................................................................................................ 31

Displaying Location Search Results Using the REST Services .................................................... 33

Initialize the Map ........................................................................................................................ 34

Add Controls ............................................................................................................................... 35

Make a Geocode REST Request ............................................................................................... 35

Page 2: Bing Maps Ajax Controls Dk 70

Display the Results..................................................................................................................... 36

Getting Route Directions Using the REST Services ...................................................................... 39

Initialize the Map ........................................................................................................................ 39

Construct the Route Request ..................................................................................................... 40

Display the Results..................................................................................................................... 40

Working with Tile Layers ............................................................................................................... 43

Adding a Tile Layer .................................................................................................................... 43

Using Events in the AJAX Control ................................................................................................. 45

Example ..................................................................................................................................... 45

Returning a Localized Map ............................................................................................................ 49

Setting the Culture...................................................................................................................... 49

Supported Cultures .................................................................................................................... 49

Remarks ..................................................................................................................................... 50

Building Your Own Module ............................................................................................................ 50

Develop Your Module ................................................................................................................. 51

Register and Load Your Module ................................................................................................ 52

Use Your Module........................................................................................................................ 52

See Also ..................................................................................................................................... 54

Microsoft.Maps API Reference ...................................................................................................... 54

In This Section ............................................................................................................................ 54

Data Structures ....................................................................................................................... 54

Mapping .................................................................................................................................. 54

Entities .................................................................................................................................... 54

User Location .......................................................................................................................... 55

Dynamic Module Loading ....................................................................................................... 55

AltitudeReference Enumeration ..................................................................................................... 55

Constants ................................................................................................................................... 55

Methods ...................................................................................................................................... 55

Example ..................................................................................................................................... 56

AnimationVisibility Enumeration .................................................................................................... 57

Constants ................................................................................................................................... 57

Color Class .................................................................................................................................... 57

Constructor ................................................................................................................................. 58

Properties ................................................................................................................................... 58

Static Methods ............................................................................................................................ 58

Methods ...................................................................................................................................... 58

Example ..................................................................................................................................... 59

Page 3: Bing Maps Ajax Controls Dk 70

Coordinates Class ......................................................................................................................... 62

Properties ................................................................................................................................... 62

See Also ..................................................................................................................................... 62

EntityCollection Class .................................................................................................................... 62

Constructor ................................................................................................................................. 62

Methods ...................................................................................................................................... 63

Events ........................................................................................................................................ 64

Example ..................................................................................................................................... 66

EntityCollectionOptions Object ...................................................................................................... 68

Properties ................................................................................................................................... 68

Example ..................................................................................................................................... 68

Events Object ................................................................................................................................ 70

Methods ...................................................................................................................................... 70

Example ..................................................................................................................................... 71

GeoLocationProvider Class ........................................................................................................... 73

Constructor ................................................................................................................................. 73

Methods ...................................................................................................................................... 73

Example ..................................................................................................................................... 75

See Also ..................................................................................................................................... 77

Infobox Class ................................................................................................................................. 77

Constructor ................................................................................................................................. 77

Methods ...................................................................................................................................... 77

Events ........................................................................................................................................ 80

Remarks ..................................................................................................................................... 80

Example ..................................................................................................................................... 81

InfoboxOptions Object ................................................................................................................... 83

Properties ................................................................................................................................... 83

Example ..................................................................................................................................... 85

See Also ..................................................................................................................................... 87

KeyEventArgs Object .................................................................................................................... 87

Properties ................................................................................................................................... 87

Example ..................................................................................................................................... 87

LabelOverlay Enumeration ............................................................................................................ 89

Constants ................................................................................................................................... 89

Methods ...................................................................................................................................... 89

Example ..................................................................................................................................... 89

Location Class (AJAX) ................................................................................................................... 91

Page 4: Bing Maps Ajax Controls Dk 70

Constructor ................................................................................................................................. 91

Properties ................................................................................................................................... 91

Static Methods ............................................................................................................................ 91

Methods ...................................................................................................................................... 92

Example ..................................................................................................................................... 92

LocationRect Class ........................................................................................................................ 93

Constructor ................................................................................................................................. 94

Properties ................................................................................................................................... 94

Static Methods ............................................................................................................................ 94

Methods ...................................................................................................................................... 95

Example ..................................................................................................................................... 96

Map Class ...................................................................................................................................... 97

Constructor ................................................................................................................................. 97

Properties ................................................................................................................................... 98

Static Methods ............................................................................................................................ 98

Methods ...................................................................................................................................... 98

Events ...................................................................................................................................... 102

Example ................................................................................................................................... 104

MapMode Class (AJAX) .............................................................................................................. 105

Mercator Map Mode Methods .................................................................................................. 105

MapOptions Object ...................................................................................................................... 106

Properties ................................................................................................................................. 106

Example ................................................................................................................................... 110

MapTypeId Enumeration ............................................................................................................. 111

Constants ................................................................................................................................. 111

Example ................................................................................................................................... 112

See Also ................................................................................................................................... 113

Module Loading Methods ............................................................................................................ 113

Methods .................................................................................................................................... 113

Example ................................................................................................................................... 114

See Also ................................................................................................................................... 116

MouseEventArgs Object .............................................................................................................. 116

Properties ................................................................................................................................. 116

Methods .................................................................................................................................... 117

Example ................................................................................................................................... 118

PixelReference Enumeration ....................................................................................................... 119

Constants ................................................................................................................................. 119

Methods .................................................................................................................................... 120

Page 5: Bing Maps Ajax Controls Dk 70

Example ................................................................................................................................... 120

Point Class ................................................................................................................................... 122

Constructor ............................................................................................................................... 122

Properties ................................................................................................................................. 122

Static Methods .......................................................................................................................... 122

Methods .................................................................................................................................... 122

Example ................................................................................................................................... 123

Polygon Class (AJAX) ................................................................................................................. 124

Constructor ............................................................................................................................... 124

Methods .................................................................................................................................... 125

Events ...................................................................................................................................... 126

Example ................................................................................................................................... 127

PolygonOptions Object ................................................................................................................ 128

Properties ................................................................................................................................. 128

Example ................................................................................................................................... 129

Polyline Class .............................................................................................................................. 131

Constructor ............................................................................................................................... 131

Methods .................................................................................................................................... 131

Events ...................................................................................................................................... 132

Example ................................................................................................................................... 133

PolylineOptions Object ................................................................................................................ 134

Properties ................................................................................................................................. 135

Example ................................................................................................................................... 135

Position Class .............................................................................................................................. 137

Properties ................................................................................................................................. 137

See Also ................................................................................................................................... 137

PositionCircleOptions Object ....................................................................................................... 137

Properties ................................................................................................................................. 137

Example ................................................................................................................................... 138

PositionError Class ...................................................................................................................... 139

Properties ................................................................................................................................. 139

See Also ................................................................................................................................... 140

PositionOptions Object ................................................................................................................ 140

Properties ................................................................................................................................. 140

Example ................................................................................................................................... 142

Pushpin Class (AJAX) ................................................................................................................. 144

Page 6: Bing Maps Ajax Controls Dk 70

Constructor ............................................................................................................................... 144

Methods .................................................................................................................................... 144

Events ...................................................................................................................................... 145

Example ................................................................................................................................... 147

PushpinOptions Object ................................................................................................................ 148

Properties ................................................................................................................................. 148

Example ................................................................................................................................... 149

TileLayer Class ............................................................................................................................ 151

Constructor ............................................................................................................................... 151

Methods .................................................................................................................................... 151

Events ...................................................................................................................................... 152

Example ................................................................................................................................... 152

See Also ................................................................................................................................... 154

TileLayerOptions Object .............................................................................................................. 154

Properties ................................................................................................................................. 154

Example ................................................................................................................................... 155

See Also ................................................................................................................................... 157

TileSource Class.......................................................................................................................... 157

Constructor ............................................................................................................................... 157

Methods .................................................................................................................................... 157

Example ................................................................................................................................... 158

See Also ................................................................................................................................... 159

TileSourceOptions Object ............................................................................................................ 159

Properties ................................................................................................................................. 159

Example ................................................................................................................................... 160

See Also ................................................................................................................................... 162

ViewOptions Object ..................................................................................................................... 162

Properties ................................................................................................................................. 162

Remarks ................................................................................................................................... 163

Example ................................................................................................................................... 164

Microsoft.Maps.Directions API Reference ................................................................................... 165

In This Section .......................................................................................................................... 165

BusinessDetails Class ................................................................................................................. 166

Properties ................................................................................................................................. 167

See Also ................................................................................................................................... 167

BusinessDisambiguationSuggestion Class ................................................................................. 167

Properties ................................................................................................................................. 167

Page 7: Bing Maps Ajax Controls Dk 70

Example ................................................................................................................................... 168

See Also ................................................................................................................................... 172

DirectionsErrorEventArgs Object ................................................................................................. 172

Properties ................................................................................................................................. 172

Example ................................................................................................................................... 172

DirectionsEventArgs Object ......................................................................................................... 174

Properties ................................................................................................................................. 174

Example ................................................................................................................................... 175

DirectionsManager Class ............................................................................................................ 177

Constructor ............................................................................................................................... 177

Methods .................................................................................................................................... 177

Events ...................................................................................................................................... 182

Example ................................................................................................................................... 183

DirectionsRenderOptions Object ................................................................................................. 185

Properties ................................................................................................................................. 185

Example ................................................................................................................................... 188

DirectionsRequestOptions Object ............................................................................................... 190

Properties ................................................................................................................................. 190

Example ................................................................................................................................... 192

DirectionsStep Class ................................................................................................................... 194

Properties ................................................................................................................................. 194

Example ................................................................................................................................... 195

DirectionsStepEventArgs Object ................................................................................................. 198

Properties ................................................................................................................................. 198

Example ................................................................................................................................... 199

DirectionsStepRenderEventArgs Object ..................................................................................... 202

Properties ................................................................................................................................. 202

Example ................................................................................................................................... 203

DirectionsStepWarning Class ...................................................................................................... 205

Properties ................................................................................................................................. 205

Example ................................................................................................................................... 205

Disambiguation Class .................................................................................................................. 208

Properties ................................................................................................................................. 208

Example ................................................................................................................................... 209

See Also ................................................................................................................................... 213

DistanceUnit Enumeration (AJAX) .............................................................................................. 213

Page 8: Bing Maps Ajax Controls Dk 70

Constants ................................................................................................................................. 213

Example ................................................................................................................................... 213

IconType Enumeration ................................................................................................................ 215

Constants ................................................................................................................................. 215

Example ................................................................................................................................... 216

LocationDisambiguationSuggestion Class .................................................................................. 219

Properties ................................................................................................................................. 219

Example ................................................................................................................................... 219

See Also ................................................................................................................................... 223

Maneuver Enumeration ............................................................................................................... 223

Constants ................................................................................................................................. 223

Example ................................................................................................................................... 227

ResetDirectionsOptions Object ................................................................................................... 230

Properties ................................................................................................................................. 230

Route Class (AJAX) ..................................................................................................................... 231

Properties ................................................................................................................................. 231

RouteAvoidance Enumeration ..................................................................................................... 231

Constants ................................................................................................................................. 231

RouteLeg Class (AJAX) ............................................................................................................... 232

Properties ................................................................................................................................. 232

Example ................................................................................................................................... 233

RouteMode Enumeration ............................................................................................................. 235

Constants ................................................................................................................................. 235

RouteOptimization Enumeration (AJAX) ..................................................................................... 236

Constants ................................................................................................................................. 236

RoutePath Class (AJAX) ............................................................................................................. 236

Properties ................................................................................................................................. 237

RouteResponseCode Enumeration ............................................................................................. 237

Constants ................................................................................................................................. 237

Example ................................................................................................................................... 239

RouteSelectorEventArgs Object .................................................................................................. 241

Properties ................................................................................................................................. 241

RouteSelectorRenderEventArgs Object ...................................................................................... 242

Properties ................................................................................................................................. 242

Page 9: Bing Maps Ajax Controls Dk 70

RouteSubLeg Class ..................................................................................................................... 242

Properties ................................................................................................................................. 243

RouteSummary Class (AJAX) ..................................................................................................... 243

Properties ................................................................................................................................. 243

Example ................................................................................................................................... 244

RouteSummaryRenderEventArgs Object .................................................................................... 246

Properties ................................................................................................................................. 246

StepWarningStyle Enumeration .................................................................................................. 247

Constants ................................................................................................................................. 247

Example ................................................................................................................................... 248

TimeType Enumeration ............................................................................................................... 251

Constants ................................................................................................................................. 251

Example ................................................................................................................................... 251

See Also ................................................................................................................................... 254

TransitLine Class ......................................................................................................................... 254

Properties ................................................................................................................................. 254

Example ................................................................................................................................... 254

TransitOptions Object .................................................................................................................. 257

Properties ................................................................................................................................. 257

Example ................................................................................................................................... 258

Waypoint Class (AJAX) ............................................................................................................... 260

Constructor ............................................................................................................................... 260

Methods .................................................................................................................................... 260

Events ...................................................................................................................................... 262

Example ................................................................................................................................... 263

WaypointEventArgs Object .......................................................................................................... 266

Properties ................................................................................................................................. 267

WaypointOptions Object .............................................................................................................. 267

Properties ................................................................................................................................. 267

Example ................................................................................................................................... 268

WaypointRenderEventArgs Object .............................................................................................. 270

Properties ................................................................................................................................. 270

Microsoft.Maps.Overlays.Style Reference .................................................................................. 271

Navigation Bar Style ................................................................................................................. 271

Microsoft.Maps.Traffic API Reference ......................................................................................... 272

Page 10: Bing Maps Ajax Controls Dk 70

In This Section .......................................................................................................................... 272

TrafficLayer Class ........................................................................................................................ 272

Constructor ............................................................................................................................... 272

Methods .................................................................................................................................... 273

Example ................................................................................................................................... 273

Microsoft.Maps.VenueMaps API Reference ............................................................................... 274

In This Section .......................................................................................................................... 274

Floor Class ................................................................................................................................... 275

Properties ................................................................................................................................. 275

Example ................................................................................................................................... 275

Footprint Class ............................................................................................................................. 278

Properties ................................................................................................................................. 278

Example ................................................................................................................................... 278

Metadata Class ............................................................................................................................ 280

Properties ................................................................................................................................. 280

Example ................................................................................................................................... 281

NearbyVenue Class ..................................................................................................................... 283

Properties ................................................................................................................................. 283

Example ................................................................................................................................... 283

NearbyVenueOptions Object ....................................................................................................... 285

Properties ................................................................................................................................. 285

Example ................................................................................................................................... 285

Polygon Class (Venue Map) ........................................................................................................ 287

Properties ................................................................................................................................. 287

Primitive Class ............................................................................................................................. 287

Properties ................................................................................................................................. 288

Methods .................................................................................................................................... 288

Example ................................................................................................................................... 289

VenueMap Class ......................................................................................................................... 291

Properties ................................................................................................................................. 291

Methods .................................................................................................................................... 292

Events ...................................................................................................................................... 292

Example ................................................................................................................................... 293

VenueMapCreationOptions Object .............................................................................................. 295

Properties ................................................................................................................................. 295

Example ................................................................................................................................... 296

Page 11: Bing Maps Ajax Controls Dk 70

VenueMapFactory Class ............................................................................................................. 297

Constructor ............................................................................................................................... 297

Methods .................................................................................................................................... 298

Example ................................................................................................................................... 298

Bing Maps AJAX Control 7.0 Supported Browsers ..................................................................... 300

Supported Browsers ................................................................................................................. 300

Bing Maps AJAX Control 7.0 Developer Resources ................................................................... 301

Developer Resources ............................................................................................................... 301

Account Issues ......................................................................................................................... 301

Licensing Questions ................................................................................................................. 301

Bing Maps AJAX Control, Version 7.0

Bing Maps™ is an online mapping service that enables users to search, discover, explore, plan,

and share information about specific locations. By using enhanced road maps, labeled aerial

photo views, and low-angle high-resolution aerial photos, Bing Maps AJAX Control 7.0, in

conjunction with the Bing Maps REST Services, provides unique opportunities for developers to

incorporate both location and local search features into their Web applications.

The Bing Maps AJAX Control 7.0 software development kit (SDK) consists of a complete set of

reference topics that cover the Bing Maps AJAX Control 7.0 application programming interface

(API). For extra code snippets and feature samples, the Bing Maps AJAX Control 7.0 Interactive

SDK is also available.

If you are reading this help file online, you can download either the CHM or PDF version of this

SDK for offline viewing.

If you are looking for documentation for the legacy AJAX Map Control, see Bing Maps AJAX

Control, Version 6.3 SDK.

In This Section Getting Started with the 7.0 Map Control

What's New in the AJAX Map Control

Developing with the 7.0 Map Control

Microsoft.Maps API Reference

Microsoft.Maps.Directions API Reference

Microsoft.Maps.Overlays.Style Reference

Microsoft.Maps.Traffic API Reference

Microsoft.Maps.VenueMaps API Reference

Supported Browsers

Developer Resources

Page 12: Bing Maps Ajax Controls Dk 70

See Also Terms and Conditions

Getting Started with the 7.0 Map Control

The Bing Maps AJAX Control 7.0 is a JavaScript control that contains the objects, methods, and

events that allow you to display maps powered by Bing Maps on your Web site. The sections in

this topic describe the steps you need to take to start using the Bing Maps AJAX Control 7.0.

Create a Bing Maps Account and Get a Key Before you begin developing your application, you need to create a developer account on the

Bing Maps Account Center. A Bing Maps Developer Account allows you to create a Bing Maps

Key to use in your map application. Getting a key is described in Getting a Bing Maps Key.

When the Bing Maps AJAX Control 7.0 is loaded with a valid Bing Maps Key, Bing Maps

counts sessions. A session begins with the load of the Bing Maps AJAX Control 7.0 into a

user‟s browser and includes all Bing Maps AJAX Control 7.0 interactions until the

browser is closed or the user moves to a different page. Detailed information about Bing

Maps usage reports is found in Viewing Bing Maps Usage Reports.

Get Familiar with the Bing Maps AJAX 7.0 Control The Developing with the 7.0 Map Control section of this SDK contains topics that describe how to

use the features provided by the AJAX map control.

What's New in the AJAX Map Control

Welcome to the latest release of the Bing Maps AJAX Control 7.0!

New Features This release of the map control includes the following new features:

Calculate driving directions Use the new Microsoft.Maps.Directions module to easily

calculate directions and display a route on your map.

Display a venue map Discover and display maps for nearby venues such as malls and

shopping centers using the Microsoft.Maps.VenueMaps module.

Show current traffic Show or hide current traffic on the map using the

Microsoft.Maps.Traffic module.

Page 13: Bing Maps Ajax Controls Dk 70

Use the new Bing Maps navigation control Load the Microsoft.Maps.Overlay.Styles

module and then set the customizeOverlays map option to use the new Bing Maps navigation

control on your map.

Set polyline and polygon stroke dash To further customize your shapes, use the new

property strokeDashArray of the PolylineOptions Object and PolygonOptions Object.

New tile layer property and event Ensure the best performance of your tile layer during

animation by modifying the new animationDisplay property of the TileLayerOptions Object.

Also, determine when your tile layer is fully downloaded using the new tiledownloadcomplete

event.

New map options For increased flexibility, new options showBreadcrumb, disableBirdseye,

disablePanning, and disableZooming have been added to the MapOptions Object.

Developing with the 7.0 Map Control

The topics in this section will help you to start using the Bing Maps AJAX Control 7.0.

In This Section Loading the AJAX Map Control

Setting Map Control Parameters

Changing the Map View

Adding Entities to the Map

Customizing Your Pushpins

Displaying Location Search Results Using the REST Services

Calculating Directions Using the Directions Module

Working with Tile Layers

Using Events in the AJAX Control

Returning a Localized Map

Building Your Own Module

Loading the AJAX Map Control

This topic describes how to load the Bing Maps AJAX Control 7.0 into your Web page to display a

map. This is the first step you need to take for any page that uses the map control.

Displaying the Default Map Displaying the default map, which includes all of the navigation functionality, consists of the

following steps:

Page 14: Bing Maps Ajax Controls Dk 70

1. At the top of the HTML page add the following DOCTYPE declaration.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

2. In the header section of an HTML page, add a META element with the charset attribute set

to "utf-8", as follows.

<meta http-equiv="Content-Type" content="text/html; charset=utf-

8"/>

It is recommended that you use UTF-8 encoding in your web page.

3. Also in the header section, add a reference to the map control, as follows.

<script charset="UTF-8" type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?

v=7.0">

</script>

To use SSL, add the s parameter to the reference as shown below.

<script charset="UTF-8" type="text/javascript"

src="https://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx

?v=7.0&s=1">

</script>

4. In the body of the page, add a DIV element to the page to contain the map. The size of the

map is defined by the height and width of the DIV element. The position of the map is set by

using the "position", "top", and "left" properties. You can set these values either inline or by

defining the values in a style class and then referencing that class, as follows.

<div id='mapDiv' style="position:absolute; width:400px;

height:400px;"></div>

or

.map {

position: absolute;

top: 20;

left: 10;

width: 400px;

height: 400px;

border:#555555 2px solid;

}

...

<div id="mapDiv" class="map"></div>

Page 15: Bing Maps Ajax Controls Dk 70

If you do not specify a width/height, the width/height of the div is used. For cross-

browser compatibility, you should always specify the position attribute (both

"absolute" and "relative" are valid values). If you use a percentage width and or

height in the map DIV, it is the percentage of the parent width or height, respectively.

The navigation control, map type selector, and breadcrumb may not work properly if

you use margin to position the map. Use CSS absolute or relative positioning instead.

5. Next, within a new script tag, create a function that can be called when your web page loads.

<script type="text/javascript">

function GetMap()

{

}

</script>

Modify the body tag so that the GetMap function is called onload.

<body onload="GetMap();">

6. Finally, create an instance of the Map Class in the GetMap function. You also need to include

a map options object to contain your credentials, which is your Bing Maps Key. See the

Getting a Bing Maps Key topic.

<script type="text/javascript">

var map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Your Bing Maps Key"});

</script>

The full code is below.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

Page 16: Bing Maps Ajax Controls Dk 70

<script type="text/javascript">

function GetMap()

{

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Your Bing Maps Key"});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:absolute; width:400px; height:400px;"></div>

</body>

</html>

Customizing the Map When Loading You can also specify other options when the map is first loaded, such as the location, zoom level,

and the imagery of the map. To do this, pass in MapOptions or ViewOptions to the Map

constructor. The code below sets the imagery to Aerial.

var mapOptions = {

credentials: "Your Bing Maps Key",

mapTypeId: Microsoft.Maps.MapTypeId.aerial

}

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), mapOptions);

Example The following code shows a complete Web page that loads a map. Valid map types are found in

the MapTypeId Enumeration topic.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

Page 17: Bing Maps Ajax Controls Dk 70

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials: "Your Bing Maps Key",

center: new Microsoft.Maps.Location(45.5, -122.5),

mapTypeId: Microsoft.Maps.MapTypeId.road,

zoom: 7});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Setting Map Control Parameters

This topic describes map control parameters.

Parameters The following table contains available parameters for the map control reference.

Parameter Values Description

v 7.0 Specifies a major API version.

The default value is the latest

version, which is 7.0.

s 0, 1 Specifies whether to use SSL.

Page 18: Bing Maps Ajax Controls Dk 70

Parameter Values Description

Set this value equal to 1 to use

SSL. The default value is 0.

mkt See the Returning a

Localized Map topic for a list

of values.

Specifies the market to use,

which defines the language Bing

Maps AJAX Control 7.0 uses.

The default value is "en-US"

(English).

onscriptload A string specifying a function

name.

Specifies the name of a

JavaScript function to call when

the map control script is loaded.

The name must contain only

alphanumeric characters.

The CSS and tiles will not be

loaded when this function is

called.

This parameter is useful for

loading the map control

asynchronously, which can

improve your site performance

by allowing the map control

script to load in parallel with

other content.

Setting Parameters To add a parameter to the map control src URL, add a "?", the parameter, and set it "=" to one of

the allowable values. Use "&" to separate parameters.

The following example sets the map control version to 7.0 and the market to Italian.

<script charset="UTF-8" type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&mkt=it-IT">

</script>

See Also Loading the AJAX Map Control

Returning a Localized Map

Page 19: Bing Maps Ajax Controls Dk 70

Changing the Map View

This topic describes how to change the map that is displayed.

Setting the Initial Map View You can set the map view when you first load the map you can use any of the options available in

the MapOptions Object or ViewOptions Object.

The code below initializes the map with a specific view. The imagery displayed is set to Bird‟s eye

using the mapTypeId option. Valid map type IDs are listed in the MapTypeId Enumeration topic.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

var mapOptions = {

credentials: "Your Bing Maps Key",

center: new Microsoft.Maps.Location(47.592, -122.332),

mapTypeId: Microsoft.Maps.MapTypeId.birdseye,

zoom: 17,

showScalebar: false

}

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), mapOptions);

}

</script>

</head>

Page 20: Bing Maps Ajax Controls Dk 70

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:600px; height:600px;"></div>

</body>

</html>

Changing the Map View If you want to change the map after it has loaded, use the setView method of the Map Class. The

ViewOptions Object contains available options that can be set.

The example below sets the map view to the specified zoom level.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:

"Your Bing Maps Key", mapTypeId: Microsoft.Maps.MapTypeId.road});

}

function SetZoom()

{

var zoomLevel = parseInt(document.getElementById('txtZoom').value);

map.setView({zoom:zoomLevel});

}

Page 21: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

Zoom Level:

<input id="txtZoom" type="text" value="1"/>

<input id="btnZoom" type="button" value="Click to set the zoom level"

onclick="SetZoom();"/>

</body>

</html>

To set the boundaries of the view instead of centering on a point, use the bounds option as shown

in the code below.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:

"Your Bing Maps Key"});

Page 22: Bing Maps Ajax Controls Dk 70

var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(new

Microsoft.Maps.Location(47.618594, -122.347618), new Microsoft.Maps.Location(47.620700, -

122.347584), new Microsoft.Maps.Location(47.622052, -122.345869));

map.setView({ bounds: viewBoundaries});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Adding Entities to the Map

This topic describes how to add entities to the map. An Entity can be any one of the following

types: Polygon, Polyline, Pushpin, TileLayer, or EntityCollection. Information about working with

tile layers is in the Working with Tile Layers topic.

Adding Single Entities to the Map To add a pushpin, polygon, or polyline to the map, simply create your object then add the entity to

the entities property of the map.

Adding a Pushpin

The following code adds a pushpin to the center of the map with the label “1”.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Page 23: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Your Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Add a pin to the center of the map

var pin = new Microsoft.Maps.Pushpin(center, {text: '1'});

map.entities.push(pin);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

To add a pushpin to a custom latitude and longitude coordinate, pass the Location object to the

Pushpin constructor, then set the view based on the location as shown below.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Page 24: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Define the pushpin location

var loc = new Microsoft.Maps.Location(47.592, -122.332);

// Add a pin to the map

var pin = new Microsoft.Maps.Pushpin(loc);

map.entities.push(pin);

// Center the map on the location

map.setView({center: loc, zoom: 10});

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Page 25: Bing Maps Ajax Controls Dk 70

Adding a Shape

To add a polyline or a polygon, use the same method used to add a pushpin. First, create your

shape then add it to the entities property of the map. The following code adds a purple polygon to

the map.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key"});

// Create a polygon

var vertices = new Array(new Microsoft.Maps.Location(20,-20), new

Microsoft.Maps.Location(20,20), new Microsoft.Maps.Location(-20,20), new

Microsoft.Maps.Location(-20,-20), new Microsoft.Maps.Location(20,-20));

var polygoncolor = new Microsoft.Maps.Color(100,100,0,100);

var polygon = new Microsoft.Maps.Polygon(vertices,{fillColor: polygoncolor,

strokeColor: polygoncolor});

// Add the polygon to the map

map.entities.push(polygon);

}

</script>

Page 26: Bing Maps Ajax Controls Dk 70

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Adding Multiple Entities to the Map If you want to add multiple entities to the map at one time, first create an EntityCollection then

add this collection to the map. The code below adds a polygon with pushpins at its corners.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Your Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(20,-20);

var location2 = new Microsoft.Maps.Location(20,20);

var location3 = new Microsoft.Maps.Location(-20,20);

var location4 = new Microsoft.Maps.Location(-20,-20);

// Create a polygon

Page 27: Bing Maps Ajax Controls Dk 70

var vertices = new Array(location1, location2, location3, location4,

location1);

var polygoncolor = new Microsoft.Maps.Color(100,100,0,100);

var polygon = new Microsoft.Maps.Polygon(vertices,{fillColor: polygoncolor,

strokeColor: polygoncolor});

// Create the entity collection with the polygon and pushpins at each corner

var polygonWithPins = new Microsoft.Maps.EntityCollection();

polygonWithPins.push(polygon);

polygonWithPins.push(new Microsoft.Maps.Pushpin(location1));

polygonWithPins.push(new Microsoft.Maps.Pushpin(location2));

polygonWithPins.push(new Microsoft.Maps.Pushpin(location3));

polygonWithPins.push(new Microsoft.Maps.Pushpin(location4));

// Add the shape to the map

map.entities.push(polygonWithPins)

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Changing Entities on the Map Once entities have been added to the map, you can use the methods of the map entities

collection to change and manipulate those entities. The code implements a button to change the

color of a shape on the map.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

Page 28: Bing Maps Ajax Controls Dk 70

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

// Define colors

var blue = new Microsoft.Maps.Color(100, 0, 0, 200);

var green = new Microsoft.Maps.Color(100, 0, 100, 100);

var purple = new Microsoft.Maps.Color(100, 100, 0, 100);

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(20,-20);

var location2 = new Microsoft.Maps.Location(20,20);

var location3 = new Microsoft.Maps.Location(-20,20);

var location4 = new Microsoft.Maps.Location(-20, -20);

var location5 = new Microsoft.Maps.Location(40, 0);

// Create some shapes

var triangleVertices = new Array(location1, location2, location5, location1);

var triangle = new Microsoft.Maps.Polygon(triangleVertices, { fillColor:

blue, strokeColor: blue });

Page 29: Bing Maps Ajax Controls Dk 70

var squareVertices = new Array(location1, location2, location3, location4,

location1);

var square = new Microsoft.Maps.Polygon(squareVertices,{fillColor: purple,

strokeColor:purple});

// Add the shapes to the map

map.entities.push(triangle);

map.entities.push(square);

}

function ChangePolygonColor()

{

// Get the map square entity. We know square was the last entity added,

// so we can calculate the index.

var mapSquare = map.entities.get(map.entities.getLength()-1);

// Get the current color

var currentColor = mapSquare.getFillColor();

if((currentColor.toString()) == (purple.toString()))

{

// Change it to green

mapSquare.setOptions({fillColor: green, strokeColor:green});

}

else

{

// Change it back to purple

mapSquare.setOptions({fillColor:purple, strokeColor:purple});

}

}

</script>

</head>

<body onload="GetMap();">

Page 30: Bing Maps Ajax Controls Dk 70

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<input id="btnChangeColor" type="button" value="Change Polygon Color"

onclick="ChangePolygonColor();"/>

</body>

</html>

Customizing Your Pushpins

The Bing Maps AJAX Control, Version 7.0 provides flexible pushpin functionality. Use options

provided in the PushpinOptions Object to customize your pushpins.

This topic describes how to customize your pushpin icon as well as how to create a pushpin info

box.

Customizing Your Pushpin Icon If you do not want to use the default pushpin icon, you can set the icon property of the

PushpinOptions to the image you want to use instead.

This example uses the image below, named “BluePushpin.png”, as the pushpin icon.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

Page 31: Bing Maps Ajax Controls Dk 70

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Add a pin to the center of the map, using a custom icon

var pin = new Microsoft.Maps.Pushpin(center, {icon: 'BluePushpin.png', width:

50, height: 50, draggable: true});

map.entities.push(pin);

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Creating a Pushpin Infobox The Bing Maps AJAX Control, Version 7.0 has built-in pushpin info box functionality which you

can customize to suit the needs of your application. To create an info box, use the Infobox and

InfoboxOptions types.

The example below shows how to display an info box when a pushpin is clicked.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

Page 32: Bing Maps Ajax Controls Dk 70

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var pinInfobox = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Add a pin to the center of the map

var pin = new Microsoft.Maps.Pushpin(center, {text: '1'});

// Create the infobox for the pushpin

pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(),

{title: 'My Pushpin',

description: 'This pushpin is located at (0,0).',

visible: false,

offset: new Microsoft.Maps.Point(0,15)});

// Add handler for the pushpin click event.

Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox);

Page 33: Bing Maps Ajax Controls Dk 70

// Hide the infobox when the map is moved.

Microsoft.Maps.Events.addHandler(map, 'viewchange', hideInfobox);

// Add the pushpin and infobox to the map

map.entities.push(pin);

map.entities.push(pinInfobox);

}

function displayInfobox(e)

{

pinInfobox.setOptions({ visible:true });

}

function hideInfobox(e)

{

pinInfobox.setOptions({ visible: false });

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Displaying Location Search Results Using the REST Services

The Bing Maps AJAX Control, version 7.0 does not have built in functionality to return find results,

but you can easily use the Bing Maps REST Services to geocode locations that you can then

display on the map.

Page 34: Bing Maps Ajax Controls Dk 70

Initialize the Map Before you add geocoding functionality, initialize the map using the following code.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key",

mapTypeId:Microsoft.Maps.MapTypeId.road});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Page 35: Bing Maps Ajax Controls Dk 70

Add Controls For this sample, add a text box and a Geocode button. In your script, create a ClickGeocode

function that is called when the button is clicked.

<input id="txtQuery" type="text" value="Portland"/>

<input type="button" value="Geocode" onclick="ClickGeocode()"/>

Since the Bing Maps REST Services also require a Bing Maps Key, you need to first retrieve the

key from the map object to ensure the session is valid. Use the getCredentials method of the

Map Class to do this. The getCredentials method takes a function to call when the credentials

are retrieved.

function ClickGeocode(credentials)

{

map.getCredentials(MakeGeocodeRequest);

}

Make a Geocode REST Request Next, make a geocode request to the Bing Maps REST Services using the value in the txtQuery

input box and the credentials.

The Bing Maps REST Services can return an XML or JSON response object. For JavaScript

code, JSON is more appropriate, so set output=JSON. This means that you need to also set a

jsonp callback function name. In this sample the callback function is named GeocodeCallback.

Finally, since you do not know if the text provided is a place name or an address, supply the

locationQuery parameter and set it to the value of the txtQuery text box. Your REST geocode

request looks like this:

var geocodeRequest = "http://dev.virtualearth.net/REST/v1/Locations/" +

document.getElementById('txtQuery').value + "?output=json&jsonp=GeocodeCallback&key=" +

credentials;

Now add script to make the REST request.

function MakeGeocodeRequest(credentials)

{

var geocodeRequest = "http://dev.virtualearth.net/REST/v1/Locations/" +

document.getElementById('txtQuery').value + "?output=json&jsonp=GeocodeCallback&key=" +

credentials;

CallRestService(geocodeRequest);

}

Page 36: Bing Maps Ajax Controls Dk 70

function CallRestService(request)

{

var script = document.createElement("script");

script.setAttribute("type", "text/javascript");

script.setAttribute("src", request);

document.body.appendChild(script);

}

function GeocodeCallback(result)

{

// Do something with the result

}

Display the Results Finally, add code to the GeocodeCallback function to set the map view to the found location and

add a pushpin at that location. The final code is shown below.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

Page 37: Bing Maps Ajax Controls Dk 70

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key",

mapTypeId:Microsoft.Maps.MapTypeId.road});

}

function ClickGeocode(credentials)

{

map.getCredentials(MakeGeocodeRequest);

}

function MakeGeocodeRequest(credentials)

{

var geocodeRequest = "http://dev.virtualearth.net/REST/v1/Locations/" +

document.getElementById('txtQuery').value + "?output=json&jsonp=GeocodeCallback&key=" +

credentials;

CallRestService(geocodeRequest);

}

function GeocodeCallback(result)

{

alert("Found location: " + result.resourceSets[0].resources[0].name);

if (result &&

result.resourceSets &&

result.resourceSets.length > 0 &&

result.resourceSets[0].resources &&

result.resourceSets[0].resources.length > 0)

{

// Set the map view using the returned bounding box

var bbox = result.resourceSets[0].resources[0].bbox;

Page 38: Bing Maps Ajax Controls Dk 70

var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(new

Microsoft.Maps.Location(bbox[0], bbox[1]), new Microsoft.Maps.Location(bbox[2],

bbox[3]));

map.setView({ bounds: viewBoundaries});

// Add a pushpin at the found location

var location = new

Microsoft.Maps.Location(result.resourceSets[0].resources[0].point.coordinates[0],

result.resourceSets[0].resources[0].point.coordinates[1]);

var pushpin = new Microsoft.Maps.Pushpin(location);

map.entities.push(pushpin);

}

}

function CallRestService(request)

{

var script = document.createElement("script");

script.setAttribute("type", "text/javascript");

script.setAttribute("src", request);

document.body.appendChild(script);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<input id="txtQuery" type="text" value="Portland"/>

<input type="button" value="Geocode" onclick="ClickGeocode()"/>

</body>

</html>

Page 39: Bing Maps Ajax Controls Dk 70

Getting Route Directions Using the REST Services

The latest release of the Bing Maps AJAX Control 7.0 provides directions functionality in

the Microsoft.Maps.Directions module. This module allows you to easily customize,

calculate, and display directions and a route on your web site without needing to use

REST services. Get started by going to the DirectionsManager Class topic, which

contains information about the calculateDirections method and sample code.

This topic describes how to use the Bing Maps REST Services to calculate and display a route on

the map.

Initialize the Map Before you add route functionality, initialize the map using the following code.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key",

mapTypeId: Microsoft.Maps.MapTypeId.road });

Page 40: Bing Maps Ajax Controls Dk 70

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Construct the Route Request Next, add input controls and construct the Bing Maps REST Services Route request.

In this example, a route is calculated between a specified start and end point. Add two text boxes

and a button to initiate the route calculation.

<input id="txtStart" type="text" value="Seattle"/>

<input id="txtEnd" type="text" value="Portland"/>

<input type="button" value="Calculate Route" onclick="ClickRoute()"/>

Then, construct the REST route request using the input values.

var routeRequest = "http://dev.virtualearth.net/REST/v1/Routes?wp.0=" +

document.getElementById('txtStart').value + "&wp.1=" +

document.getElementById('txtEnd').value +

"&routePathOutput=Points&output=json&jsonp=RouteCallback&key=" + credentials;

Display the Results Finally, add code to make the route request when the button is clicked, and add code to the

RouteCallback function to set the map view and draw the route. The final code is shown below.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Page 41: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key",

mapTypeId: Microsoft.Maps.MapTypeId.road });

}

function ClickRoute(credentials)

{

map.getCredentials(MakeRouteRequest);

}

function MakeRouteRequest(credentials)

{

var routeRequest = "http://dev.virtualearth.net/REST/v1/Routes?wp.0=" +

document.getElementById('txtStart').value + "&wp.1=" +

document.getElementById('txtEnd').value +

"&routePathOutput=Points&output=json&jsonp=RouteCallback&key=" + credentials;

CallRestService(routeRequest);

}

Page 42: Bing Maps Ajax Controls Dk 70

function RouteCallback(result) {

if (result &&

result.resourceSets &&

result.resourceSets.length > 0 &&

result.resourceSets[0].resources &&

result.resourceSets[0].resources.length > 0) {

// Set the map view

var bbox = result.resourceSets[0].resources[0].bbox;

var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(new

Microsoft.Maps.Location(bbox[0], bbox[1]), new Microsoft.Maps.Location(bbox[2],

bbox[3]));

map.setView({ bounds: viewBoundaries});

// Draw the route

var routeline = result.resourceSets[0].resources[0].routePath.line;

var routepoints = new Array();

for (var i = 0; i < routeline.coordinates.length; i++) {

routepoints[i]=new

Microsoft.Maps.Location(routeline.coordinates[i][0], routeline.coordinates[i][1]);

}

// Draw the route on the map

var routeshape = new Microsoft.Maps.Polyline(routepoints,

{strokeColor:new Microsoft.Maps.Color(200,0,0,200)});

map.entities.push(routeshape);

Page 43: Bing Maps Ajax Controls Dk 70

}

}

function CallRestService(request)

{

var script = document.createElement("script");

script.setAttribute("type", "text/javascript");

script.setAttribute("src", request);

document.body.appendChild(script);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<input id="txtStart" type="text" value="Seattle"/>

<input id="txtEnd" type="text" value="Portland"/>

<input type="button" value="Calculate Route" onclick="ClickRoute()"/>

</body>

</html>

Working with Tile Layers

This topic describes how to add a custom tile layer to the map.

Adding a Tile Layer A tile layer is a valid map entity, so after you construct your layer, you can add it to the map using

the push method of the map entities collection. The code below adds a custom tile layer to the

map.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

Page 44: Bing Maps Ajax Controls Dk 70

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key",

center:new Microsoft.Maps.Location(48.03,-122.4), zoom:12, mapTypeId:

Microsoft.Maps.MapTypeId.road });

try

{

// Create the tile layer source

var tileSource = new Microsoft.Maps.TileSource({uriConstructor:

'http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png'});

// Construct the layer using the tile source

var tilelayer= new Microsoft.Maps.TileLayer({ mercator: tileSource,

opacity: .7 });

// Push the tile layer to the map

map.entities.push(tilelayer);

}

catch(err)

{

alert( 'Error Message:' + err.message);

Page 45: Bing Maps Ajax Controls Dk 70

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Using Events in the AJAX Control

The Bing Maps AJAX Control 7.0 provides many events to allow your application to respond to

user actions. The EntityCollection, Map, Pushpin, Polyline, and Polygon classes all have event

members. The code examples in this topic show how to use the Map click event and the

EntityCollection entityadded event.

Example The example below shows how to use the Map click event to display the coordinate values of

the clicked point in a text box.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

Page 46: Bing Maps Ajax Controls Dk 70

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

//Add handler for the map click event.

Microsoft.Maps.Events.addHandler(map, 'click', displayLatLong);

}

function displayLatLong(e) {

if (e.targetType == "map") {

var point = new Microsoft.Maps.Point(e.getX(), e.getY());

var loc = e.target.tryPixelToLocation(point);

document.getElementById("textBox").value= loc.latitude + ", " +

loc.longitude;

}

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div><br>

<b>Click the map to display the coordinate values at that point.</b><br>

Latitude, Longitude:

<input id='textBox' type="text" style="width:250px;"/>

</body>

</html>

You can expand the example above and add a pushpin wherever the user clicks. The code below

also “greys out” the other pushpins in the entities collection when a new one is added.

Page 47: Bing Maps Ajax Controls Dk 70

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var noPins = true;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Add a handler for the map click event.

Microsoft.Maps.Events.addHandler(map, 'click', addPin);

// Add a handler to function that will grey out

// other pins in the collection when a new one is added

Microsoft.Maps.Events.addHandler(map.entities, 'entityadded', shadePins);

}

function addPin(e) {

if (e.targetType == "map") {

var point = new Microsoft.Maps.Point(e.getX(), e.getY());

Page 48: Bing Maps Ajax Controls Dk 70

var loc = e.target.tryPixelToLocation(point);

var pin = new Microsoft.Maps.Pushpin(loc);

map.entities.push(pin);

}

}

function shadePins(e) {

if (noPins) {

// If there aren't yet any pins on the map, do not grey the pin out.

noPins = false;

}

else

{

var pin = null;

// Loop through the collection of pushpins on the map and grey out

// all but the last one added (which is at the end of the array).

var i = 0;

for (i = 0; i < e.collection.getLength() - 1; i++)

{

pin = e.collection.get(i);

pin.setOptions({ icon: "GreyPin.png" });

}

}

}

</script>

</head>

Page 49: Bing Maps Ajax Controls Dk 70

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div><br>

<b>Click the map to add a pushpin at that point.</b><br>

</body>

</html>

Returning a Localized Map

The Bing Maps AJAX Control 7.0 provides the ability to return a localized map and route

directions.

Setting the Culture By default the map labels and the navigation control text are provided in the culture English-

United States (en-US). However, the map control culture can be changed by adding the mkt

parameter to the map control reference, as in the following example, which sets the culture to

French-France (fr-FR).

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&mkt=fr-

fr"></script>

Supported Cultures The following table lists supported cultures for the map control imagery and

Microsoft.Maps.Directions module. The Culture column lists the valid values for the mkt

parameter.

Language -

Country/Region

Culture Map Control Microsoft.Maps.Directions

module

Czech – Czech

Republic

cs-CZ X

Danish – Denmark da-DK X

Dutch - Belgium nl-BE X

Dutch – Netherlands nl-NL X

English - Australia en-AU X

English – Canada en-CA X X

Page 50: Bing Maps Ajax Controls Dk 70

Language -

Country/Region

Culture Map Control Microsoft.Maps.Directions

module

English - India en-IN X

English - United

Kingdom

en-GB X X

English - United States en-US X X

Finnish – Finland fi-FI X

French – Canada fr-CA X X

French – France fr-FR X X

German – Germany de-DE X X

Italian – Italy it-IT X X

Japanese - Japan ja-JP X X

Norwegian (Bokmal) -

Norway

nb-NO X

Portuguese - Brazil pt-BR X

Portuguese - Portugal pt-PT X

Spanish - Mexico es-MX X X

Spanish - Spain es-ES X X

Spanish – United

States

es-US X X

Swedish - Sweden sv-SE X

Remarks Error messages are always displayed in English - United States.

Building Your Own Module

The Bing Maps AJAX Control 7.0 allows you to easily register and load your own script modules.

This topic describes how to create a simple module.

Page 51: Bing Maps Ajax Controls Dk 70

Develop Your Module Begin by developing your module. The sample module below takes a map object as its

constructor and exposes a method to draw a red arrow pointing to a given location.

// arrowmodule.js

function ArrowModule(map)

{

// Use the given location to draw an arrow pointing to that spot

this.drawRedArrow = function(location)

{

// Initialize the polygon locations

var points = new Array(8);

points[0] = location;

points[1] = new Microsoft.Maps.Location(location.latitude+10,

location.longitude);

points[2] = new Microsoft.Maps.Location(location.latitude+5,

location.longitude-5);

points[3] = new Microsoft.Maps.Location(location.latitude+30,

location.longitude-25);

points[4] = new Microsoft.Maps.Location(location.latitude+25,

location.longitude-30);

points[5] = new Microsoft.Maps.Location(location.latitude+5,

location.longitude-5);

points[6] = new Microsoft.Maps.Location(location.latitude, location.longitude-

10);

points[7] = location;

// Create the arrow

var red = new Microsoft.Maps.Color(200, 200, 0, 0);

var arrow = new Microsoft.Maps.Polygon(points, {strokeColor:red,

fillColor:red});

map.entities.push(arrow);

Page 52: Bing Maps Ajax Controls Dk 70

}

}

Microsoft.Maps.moduleLoaded('ArrowModule');

Note that the last line of the module calls the Microsoft.Maps.moduleLoaded method, which

calls the main code callback function.

After you have finished implementing your module, host your module script file on a web server.

Register and Load Your Module After you have created your module and hosted it, register it within your map control application

using the Microsoft.Maps.registerModule method.

Microsoft.Maps.registerModule("ArrowModule", "http://example.com/arrowmodule.js");

Next, load your module using the Microsoft.Maps.loadModule method, specifying the function

to call when the module is loaded.

Microsoft.Maps.loadModule("ArrowModule", { callback: myModuleLoaded });

Use Your Module Finally, use the functions provided by your module in your map control code. The sample code

below uses the drawRedArrow method of the ArrowModule to draw an arrow pointing to the

center of the map.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map;

Page 53: Bing Maps Ajax Controls Dk 70

function myModuleLoaded()

{

// When the module is fully loaded, then this function is called.

// Now you can initialize a module object and use the module function to

// draw an arrow pointing to the center of the map.

var arrowModule = new ArrowModule(map);

arrowModule.drawRedArrow(map.getCenter());

}

function GetMap()

{

// Initialize the map

var options = {credentials: "Bing Maps Key"};

map = new Microsoft.Maps.Map(document.getElementById('mapDiv'), options);

// Register and load the arrow module

Microsoft.Maps.registerModule("ArrowModule",

"http://example.com/arrowmodule.js");

Microsoft.Maps.loadModule("ArrowModule", { callback: myModuleLoaded });

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px;

height:400px;"></div>

</body>

</html>

Page 54: Bing Maps Ajax Controls Dk 70

See Also Module Loading Methods

Microsoft.Maps API Reference

This section contains reference documentation for the Microsoft.Maps API, which contains the

core types of the Bing Maps AJAX Control 7.0.

In This Section

Data Structures

AltitudeReference Enumeration

Location Class

LocationRect Class

Point Class

Mapping

Events Object

KeyEventArgs Object

LabelOverlay Enumeration

Map Class

MapMode Class

MapOptions Object

MapTypeId Enumeration

MouseEventArgs Object

PixelReference Enumeration

ViewOptions Object

Entities

Color Class

EntityCollection Class

EntityCollectionOptions Object

Events Object

Infobox Class

InfoboxOptions Object

MouseEventArgs Object

Page 55: Bing Maps Ajax Controls Dk 70

Polyline Class

PolylineOptions Object

Polygon Class

PolygonOptions Object

Pushpin Class

PushpinOptions Object

TileLayer Class

TileLayerOptions Object

TileSource Class

TileSourceOptions Object

User Location

Coordinates Class

GeoLocationProvider Class

Position Class

PositionCircleOptions Object

PositionError Class

PositionOptions Object

Dynamic Module Loading

Module Loading Methods

AltitudeReference Enumeration

Defines the reference point from which the altitude is measured.

Constants

Name Description

ground The altitude is measured from the ground level.

ellipsoid The altitude is measured from the WGS 84

ellipsoid of the Earth.

Methods

Page 56: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

isValid isValid(reference:AltitudeReference) boolean Determines if the

specified reference is a

supported

AltitudeReference.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Create two locations with different altitude references.

var groundLoc = new Microsoft.Maps.Location(47, -122, 100,

Microsoft.Maps.AltitudeReference.ground);

var ellipsoidLoc = new Microsoft.Maps.Location(47, -122, 100,

Microsoft.Maps.AltitudeReference.ellipsoid);

// Set the map view

var mapOptions = {credentials: "Bing Maps Key",

center: groundLoc,

mapTypeId: Microsoft.Maps.MapTypeId.birdseye,

zoom:16};

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), mapOptions);

Page 57: Bing Maps Ajax Controls Dk 70

// Add two pushpins to demonstrate the difference when using different altitude

references

map.entities.push(new Microsoft.Maps.Pushpin(groundLoc, {text: "G"}));

map.entities.push(new Microsoft.Maps.Pushpin(ellipsoidLoc, {text: "E"}));

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:600px; height:600px;"></div>

</body>

</html>

AnimationVisibility Enumeration

Defines a tile layer‟s visibility during animation.

Constants

Name Description

auto The map control determines whether or not to

show a tile layer based on system capability. If

a browser can render a tile layer with

acceptable performance, it is displayed during

animations.

hide The tile layer is not displayed during animation.

show The tile layer is displayed during animations.

This option may impact performance on older

browsers.

Color Class

Represents a color.

Page 58: Bing Maps Ajax Controls Dk 70

Constructor

Name Definition Description

Color Color(a:number, r:number,

g:number, b:number)

Initializes a new instance of

the Color class. The a

parameter represents opacity.

The range of valid values for

all parameters is 0 to 255.

Properties

Name Type Description

a number The opacity of the color. The

range of valid values is 0 to 255.

r number The red value of the color. The

range of valid values is 0 to 255.

g number The green value of the color.

The range of valid values is 0 to

255.

b number The blue value of the color. The

range of valid values is 0 to 255.

Static Methods

Name Definition Return Value Description

clone clone(color:Color) Color Creates a copy of the

Color object.

fromHex fromHex(hex:string) Color Converts the specified

hex string to a Color.

Methods

Page 59: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

clone clone() Color Returns a copy of the

Color object.

getOpacity getOpacity() number Returns the opacity of

the Color as a value

between 0 (a=0) and 1

(a=255).

toHex toHex() string Converts the Color into

a 6-digit hex string.

Opacity is ignored. For

example, a Color with

values (255,0,0,0) is

returned as hex string

#000000.

toString toString() string Converts the Color

object to a string.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

Page 60: Bing Maps Ajax Controls Dk 70

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(-20,-20);

var location2 = new Microsoft.Maps.Location(20,-20);

var location3 = new Microsoft.Maps.Location(20,20);

var location4 = new Microsoft.Maps.Location(60, 20);

var location5 = new Microsoft.Maps.Location(60, 60);

// Create a shape

var lineVertices = new Array(location1, location2, location3, location4,

location5);

var line = new Microsoft.Maps.Polyline(lineVertices,{strokeColor:new

Microsoft.Maps.Color(100, 100, 0, 100)});

// Add the shape to the map

map.entities.push(line);

}

function SetPolygonColor()

{

// Get the polyline entity.

var mapLine = map.entities.get(0);

// Set the option values

var opacity = document.getElementById('txtA').value;

var rValue = document.getElementById('txtR').value;

var gValue = document.getElementById('txtG').value;

var bValue = document.getElementById('txtB').value;

var lineWidth = document.getElementById('txtWidth').value;

Page 61: Bing Maps Ajax Controls Dk 70

// Verify input values and set the opacity, color,

// and width of the line.

if (((opacity < 0) || (opacity > 255)) ||

((rValue < 0) || (rValue > 255)) ||

((gValue < 0) || (gValue > 255)) ||

((bValue < 0) || (bValue > 255)) )

{

alert("Opacity and all color values must be between 0 and 255.");

}

else

{

mapLine.setOptions({strokeColor:new Microsoft.Maps.Color(opacity, rValue,

gValue, bValue), strokeThickness:lineWidth});

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

Line Opacity: <input id="txtA" type="text" value="100"/><br/>

Red Color Value: <input id="txtR" type="text" value="100"/><br/>

Green Color Value: <input id="txtG" type="text" value="100"/><br/>

Blue Color Value: <input id="txtB" type="text" value="100"/><br/>

Line Width: <input id="txtWidth" type="text" value="5"/><br/>

<input id="btnChangeColor" type="button" value="Set Polygon Color"

onclick="SetPolygonColor();"/>

</body>

</html>

Page 62: Bing Maps Ajax Controls Dk 70

Coordinates Class

Represents the coordinates of the position of the user.

Properties

Name Type Description

accuracy number The accuracy, in meters, of

the latitude and longitude

values.

altitude number The altitude of the location.

altitudeAccuracy number The accuracy, in meters, of

the altitude value.

heading number The direction of travel of the

hosting device.

latitude number The latitude of the location.

longitude number The longitude of the location.

speed number The ground speed of the

hosting device, in meters per

second.

See Also GeoLocationProvider Class

EntityCollection Class

Contains a collection of entities. An Entity can be any one of the following types: Infobox,

Polygon, Polyline, Pushpin, TileLayer, or EntityCollection.

Constructor

Name Definition Description

EntityCollection EntityCollection(options?:EntityCollectionOptions) Initializes a new

Page 63: Bing Maps Ajax Controls Dk 70

Name Definition Description

instance of the

EntityCollection

class.

Methods

Name Definition Return

Value

Description

clear clear() None Removes all

entities from the

collection.

get get(index:number) Entity* Returns the entity

at the specified

index in the

collection.

getLength getLength() number Returns the

number of entities

in the collection.

getVisible getVisible() boolean Returns whether

the entity

collection is visible

on the map.

getZIndex getZIndex() number Gets the z-index

of the entity

collection with

respect to other

items on the map.

indexOf indexOf(entity:Entity*) number Returns the index

of the specified

entity in the

collection. If the

entity is not found

in the collection, -1

is returned.

insert insert(entity:Entity*, index:number) None Inserts the

specified entity

Page 64: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

into the collection

at the given index.

pop pop() Entity* Removes the last

entity from the

collection and

returns it.

push push(entity:Entity*) None Adds the specified

entity to the last

position in the

collection.

remove remove(entity:Entity*) Entity* Removes the

specified entity

from the collection

and returns it.

removeAt removeAt(index:number) Entity* Removes the

entity at the

specified index

from the collection

and returns it.

setOptions setOptions(options:EntityCollectionOptions) None Sets the options

for the entity

collection.

toString toString() string Converts the

EntityCollection

object to a string.

* An Entity can be any one of the following types: Infobox, Polygon, Polyline, Pushpin, TileLayer,

or EntityCollection.

Events

Name Arguments Description

entityadded object: {collection:

EntityCollection, entity:Entity*}

Occurs when one of the

following happens:

An entity is added to the

Page 65: Bing Maps Ajax Controls Dk 70

Name Arguments Description

collection.

One of the entities of the

collection (such as another

entity collection) fires the

entityadded event.

For example, if collection #1

contains an entity, which is

another collection #2, then

when an entity is added to

collection #2, two entityadded

events are fired.

entitychanged object: {collection:

EntityCollection, entity:Entity*}

Occurs when one of the

following happens:

The collection changes.

An entity of the

collection changes.

One of the entities of the

collection (such as another

entity collection) fires the

entitychanged event.

For example, if collection #1

contains an entity, which is

another collection #2, then

when an entity of collection #2

changes, two entitychanged

events are fired.

entityremoved object: {collection:

EntityCollection, entity:Entity*}

Occurs when one of the

following happens:

An entity of the

collection is removed.

One of the entities of the

collection (such as another

entity collection) fires the

entityremoved event.

For example, if collection #1

contains an entity, which is

another collection #2, then

when an entity of collection #2

is removed, two

entityremoved events are

Page 66: Bing Maps Ajax Controls Dk 70

Name Arguments Description

fired.

* An Entity can be any one of the following types: Infobox, Polygon, Polyline, Pushpin, TileLayer,

or EntityCollection.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var pinTotal = 0;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key"});

// Add handler for the map click event - add a pin to the click location.

Microsoft.Maps.Events.addHandler(map, 'click', addPin);

}

Page 67: Bing Maps Ajax Controls Dk 70

function addPin(e) {

if (e.targetType == "map") {

// Return the location where the map was clicked and create the pin.

var point = new Microsoft.Maps.Point(e.getX(), e.getY());

var loc = e.target.tryPixelToLocation(point);

var pin = new Microsoft.Maps.Pushpin(loc);

// Attach a handler to the pin so that it is removed when it is clicked

Microsoft.Maps.Events.addHandler(pin, 'click', removePin);

// Add the pushpin

map.entities.push(pin);

}

}

function removePin(e)

{

var indexOfPinToRemove = map.entities.indexOf(e.target);

map.entities.removeAt(indexOfPinToRemove);

}

</script>

</head>

<body onload="GetMap();">

Page 68: Bing Maps Ajax Controls Dk 70

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<b>Click the map to add a pin, or click a pin to remove it.<b/>

</body>

</html>

EntityCollectionOptions Object

Contains options for an entity collection.

Properties

Name Type Description

visible boolean A Boolean indicating whether

the entity collection is visible on

the map.

zIndex number The z-index of the entity

collection with respect to other

items on the map.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

Page 69: Bing Maps Ajax Controls Dk 70

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

// Add handler for the map click event - add a pin to the click location.

Microsoft.Maps.Events.addHandler(map, 'click', addPin);

}

function addPin(e) {

if (e.targetType == "map") {

// Return the location where the map was clicked and create the pin.

var point = new Microsoft.Maps.Point(e.getX(), e.getY());

var loc = e.target.tryPixelToLocation(point);

var pin = new Microsoft.Maps.Pushpin(loc);

// Add the pushpin

map.entities.push(pin);

}

}

function hideAllPins(){

// Hide all the entities on the map

map.entities.setOptions({visible:false});

}

function showAllPins(){

Page 70: Bing Maps Ajax Controls Dk 70

// Show all the entities on the map

map.entities.setOptions({visible:true});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<input type="button" value="Hide all pins" onclick="hideAllPins();"/>

<input type="button" value="Show all pins" onclick="showAllPins();"/>

</body>

</html>

Events Object

Provides event handling functionality for map and entity events.

The Events object does not need to be initialized. Call the Events methods directly.

Methods

Name Definition Return

Value

Description

addHandler addHandler(target:object,

eventName:string,

handler:function)

object Attaches the handler for the event

that is thrown by the target. Use

the return object to remove the

handler using the removeHandler

method.

Microsoft.Maps.Events.addHandle

r(map, 'viewchangedend’,

function(e){ //Handle the

event });

addThrottledHan

dler

addThrottledHandler(target:o

bject, eventName:string,

object Attaches the handler for the event

that is thrown by the target, where

Page 71: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

handler:function,

throttleInterval:number)

the minimum interval between

events (in milliseconds) is

specified in the throttleInterval

parameter. The last occurrence of

the event is called after the

specified throttleInterval.

hasHandler hasHandler(target:object,

eventName:string)

boolea

n

Checks if the target has any

attached event handler.

invoke invoke(target:object,

eventName:string, args:object)

None Invokes an event on the target.

This causes all handlers for the

specified eventName to be called.

removeHandler removeHandler(handlerId:

object)

None Detaches the specified handler

from the event. The handlerId is

returned by the addHandler and

addThrottledHandler methods.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var infobox = null;

function GetMap()

Page 72: Bing Maps Ajax Controls Dk 70

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Create a pin at the center of the map and its corresponding infobox

var pin = new Microsoft.Maps.Pushpin(center);

infobox = new Microsoft.Maps.Infobox(center, {title: 'Pushpin infobox',

visible:false, offset:new Microsoft.Maps.Point(0,35)});

// Add event handlers for hovering over the pushpin

Microsoft.Maps.Events.addHandler(pin, 'mouseover', showInfobox);

Microsoft.Maps.Events.addHandler(pin, 'mouseout', hideInfobox);

// Add the pushpin and hidden infobox to the map

map.entities.push(pin);

map.entities.push(infobox);

}

function showInfobox()

{

infobox.setOptions({visible:true});

}

function hideInfobox()

{

infobox.setOptions({visible:false});

}

Page 73: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

GeoLocationProvider Class

Contains methods for obtaining and displaying the user‟s current location.

This functionality is only available on browsers that support the W3C GeoLocation API.

Constructor

Name Definition Description

GeoLocationProvider GeoLocationProvider(map:Map) Initializes a new instance of

the GeoLocationProvider

class.

Methods

Name Definition Retur

n

Value

Description

addAccuracyCircle addAccuracyCircle(center:Location,

radiusInMeters:number,

segments:number,

options:PositionCircleOptions)

None Renders a geo

location accuracy

circle on the map.

The accuracy

circle is created

with the center at

the specified

location, using the

Page 74: Bing Maps Ajax Controls Dk 70

Name Definition Retur

n

Value

Description

given

radiusInMeters,

and with the

specified number

of segments for

the accuracy

circle polygon.

Additional options

are also available

to adjust the style

of the polygon.

cancelRequest cancelRequest() None Cancels the

processing of the

current

getCurrentPositio

n request. This

method prevents

the response from

being processed.

getCurrentPosition getCurrentPosition(options:PositionOptio

ns)

None Obtains the user‟s

current location

and displays it on

the map.

The

accuracy

of the

user

location

obtained

using this

method

varies

widely

dependin

g on the

desktop

browser

Page 75: Bing Maps Ajax Controls Dk 70

Name Definition Retur

n

Value

Description

or mobile

device of

the

requestin

g client.

Desktop

users

may

experienc

e low

user

location

accuracy

(accuracy

circles

with large

radiuses),

while

mobile

user

location

accuracy

may be

much

greater (a

few

meters).

removeAccuracyCircl

e

removeAccuracyCircle() None Removes the

current geo

location accuracy

circle.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

Page 76: Bing Maps Ajax Controls Dk 70

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Set the map options

var mapOptions = {credentials:"Bing Maps Key"};

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

mapOptions);

// Initialize the location provider

var geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(map);

// Get the user's current location

geoLocationProvider.getCurrentPosition();

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Page 77: Bing Maps Ajax Controls Dk 70

See Also PositionOptions Object

Infobox Class

Represents an info box on the map. You can use this class to create pop-up balloons for

pushpins.

Constructor

Name Definition Description

Infobox Infobox(location:Location,

options?:InfoboxOptions)

Initializes a new instance of

the Infobox class.

Methods

Name Definition Return

Value

Description

getActions getActions() Object Returns a list of actions, where

each item is a name-value pair

indicating an action link name

and the event name for the

action that corresponds to that

action link.

getAnchor getAnchor() Point Returns the point on the infobox

which is anchored to the map.

An anchor of (0,0) is the top left

corner of the infobox.

getDescription getDescription() string Returns the string that is printed

inside the infobox.

getHeight getHeight() number Returns the height of the

infobox.

getHtmlContent getHtmlContent() string Returns the infobox as HTML.

getId getId() string Returns the ID of the infobox.

Page 78: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

getLocation getLocation() Location Returns the location on the map

where the infobox‟s anchor is

attached.

getOffset getOffset() number Returns the amount the infobox

pointer is shifted from the

location of the infobox, or if

showPointer is false, then it is

the amount the infobox bottom

left edge is shifted from the

location of the infobox. The

default value is (0,0), which

means there is no offset.

getOptions getOptions() InfoboxOpti

ons

Returns the info box options.

getShowCloseB

utton

getShowCloseButton() boolean Returns a boolean indicating

whether the infobox close button

is shown.

getShowPointer getShowPointer() boolean Returns a boolean indicating

whether the infobox is drawn

with a pointer.

getTitle getTitle() string Returns a string that is the title of

the info box.

getTitleAction getTitleAction() Object Returns an object containing a

name-value pair indicating the

link text to the right of an info

box title and the event name for

the action that corresponds to

that link.

getTitleClickHan

dler

getTitleClickHandler() string Returns the name of the function

to call when the title of the info

box is clicked.

getVisible getVisible() boolean Returns whether the infobox is

visible. A value of false indicates

that the infobox is hidden,

although it is still an entity on the

map.

Page 79: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

getWidth getWidth() number Returns the width of the infobox.

getZIndex getZIndex() number Returns the z-index of the

infobox with respect to other

items on the map.

setHtmlContent setHtmlContent(content:stri

ng)

None Sets the HTML content of the

infobox. You can use this

method to change the look of the

infobox. When custom HTML is

used to represent the info box,

the info box is anchored at the

top-left corner.

var infoboxOptions = {width

:200, height :100,

showCloseButton: true, zIndex:

0, offset:new

Microsoft.Maps.Point(10,0),

showPointer: true};

var defInfobox = new

Microsoft.Maps.Infobox(map.get

Center(), infoboxOptions );

map.entities.push(defInfobox);

defInfobox.setHtmlContent('<di

v id="infoboxText"

style="background-color:White;

border-style:solid;border-

width:medium; border-

color:DarkOrange; min-

height:100px;

position:absolute;top:0px;

left:23px; width:240px;"><b

id="infoboxTitle"

style="position:absolute;

top:10px; left:10px;

width:220px;">myTitle</b><a

id="infoboxDescription"

style="position:absolute;

top:30px; left:10px;

width:220px;">lkjsl lkjdkl

lkajdlkj

Page 80: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

klasdjfkl</a></div>');

setLocation setLocation(location:Locati

on)

None Sets the location on the map

where the anchor of the infobox

is attached.

setOptions setOptions(options:Infobox

Options)

None Sets options for the infobox.

toString toString() string Converts the Infobox object to a

string.

Events

Name Arguments Description

click eventArgs:MouseEventArgs Occurs when the mouse is

used to click the infobox.

entitychanged object: {entity:Entity} Occurs when the location

of the infobox or any of the

infobox options change.

mouseenter eventArgs:MouseEventArgs Occurs when the mouse

cursor enters the area

covered by the infobox.

mouseleave eventArgs:MouseEventArgs Occurs when the mouse

cursor leaves the area

covered by the infobox.

Remarks The Bing Maps AJAX Control default info box is designed for desktop browsers and may not

function properly on all mobile browsers.

For the best performance, it is recommended that you have only one info box on the map at a

time.

Page 81: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var pinInfobox = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Add a pin to the center of the map

var pin = new Microsoft.Maps.Pushpin(center, {text: '1'});

// Create the info box for the pushpin

pinInfobox = new Microsoft.Maps.Infobox(new Microsoft.Maps.Location(0,0),

{title: 'My Pushpin', visible: true});

Page 82: Bing Maps Ajax Controls Dk 70

// Add a handler for the pushpin click event.

Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox);

// Hide the info box when the map is moved.

Microsoft.Maps.Events.addHandler(map, 'viewchange', hideInfobox);

// Add the pushpin and info box to the map

map.entities.push(pin);

map.entities.push(pinInfobox);

}

function displayInfobox(e)

{

pinInfobox.setOptions({ visible:true });

}

function hideInfobox(e)

{

pinInfobox.setOptions({ visible: false });

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:500px; height:500px;"></div>

</html>

Page 83: Bing Maps Ajax Controls Dk 70

InfoboxOptions Object

Represents the options for an infobox.

Properties

Name Type Description

actions Object A list of the info box actions, where

each item is a label (the link text) or

icon (the URL of the image to use as

the icon link) and eventHandler

(name of the function handling a

click of the action link).

var infoboxOptions = {title:'My

Infobox', description:'Testing

actions', actions:[{label:

'test1', eventHandler:

testEvent1}, {label: 'test2',

eventHandler: testEvent2},{label:

'test3', eventHandler:

testEvent3}] };

description string The string displayed inside the info

box.

height number The height of the info box. The

default value is 126.

htmlContent string The HTML that represents the info

box. If custom HTML is used to

represent the info box, the info box is

anchored at the top-left corner.

var infoboxOptions = {width :200,

height :100, showCloseButton:

true, zIndex: 0, offset:new

Microsoft.Maps.Point(10,0),

showPointer: true,

htmlContent:'<b>Custom HTML</b>'};

id string The ID associated with the info box.

location Location The location on the map where the

info box‟s anchor is attached.

Page 84: Bing Maps Ajax Controls Dk 70

Name Type Description

offset Point The amount the info box pointer is

shifted from the location of the info

box, or if showPointer is false, then

it is the amount the info box bottom

left edge is shifted from the location

of the info box. If custom HTML is

set, it is the amount the top-left

corner of the info box is shifted from

its location. The default offset value

is (0,0), which means there is no

offset.

showCloseButton boolean A boolean indicating whether to

show the close dialog button on the

info box. The default value is true.

By default the close button is

displayed as an X in the top right

corner of the info box.

This property is ignored if custom

HTML is used to represent the info

box.

showPointer boolean A boolean indicating whether to

display the info box with a pointer.

The default value is true. In this case

the info box is anchored at the

bottom point of the pointer. If this

property is set to false, the info box

is anchored at the bottom left corner.

This property is ignored if custom

HTML is used to represent the info

box.

title string The title of the info box.

titleAction Object An action to take when the link to the

right of an info box title is clicked.

The specified object contains a label

(the link text) and an eventHandler

(the name of the function handling a

click of the link).

titleClickHandler string The name of the function to call

Page 85: Bing Maps Ajax Controls Dk 70

Name Type Description

when the title of the info box is

clicked. If this property is set, the title

of the info box is displayed as a link.

visible boolean A boolean indicating whether to

show or hide the info box. The

default value is true. A value of false

indicates that the info box is hidden,

although it is still an entity on the

map.

width number The width of the info box. The default

value is 256.

zIndex number The z-index of the info box with

respect to other items on the map.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

Page 86: Bing Maps Ajax Controls Dk 70

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Create an info box

var infoboxOptions = {width:300,

height: 100,

title: "Information Box Title",

description: "This is the map.",

showPointer: false,

titleClickHandler: InfoboxHandler,

offset: new Microsoft.Maps.Point(-100,0)};

var myInfobox = new Microsoft.Maps.Infobox(center, infoboxOptions);

// Add the info box to the map

map.entities.push(myInfobox);

}

function InfoboxHandler()

{

alert("Infobox title was clicked!");

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:500px; height:500px;"></div>

Page 87: Bing Maps Ajax Controls Dk 70

</html>

See Also Infobox Class

KeyEventArgs Object

Contains the arguments for keyboard events.

Properties

Name Type Description

altKey boolean A boolean indicating if the ALT

key was pressed.

ctrlKey boolean A boolean indicating if the

CTRL key was pressed.

eventName string The event that occurred.

handled boolean A boolean indicating whether

the event is handled. If this

property is set to true, the

default map control behavior

for the event is cancelled.

keyCode string The ASCII character code that

identifies the keyboard key that

was pressed.

originalEvent object The original browser event.

shiftKey boolean A boolean indicating if the

SHIFT key was pressed.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

Page 88: Bing Maps Ajax Controls Dk 70

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

//Add handler for the map click event.

Microsoft.Maps.Events.addHandler(map, 'keypress', addPin);

}

function addPin(e) {

if (e.keyCode == "112") {

// If the 'p' key is pressed, add a pushpin to the center of the

// current map view.

var center = map.getCenter();

var pin = new Microsoft.Maps.Pushpin(center);

map.entities.push(pin);

}

}

Page 89: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div><br>

<b>Click the 'p' key to add a pushpin to the map.</b>

</body>

</html>

LabelOverlay Enumeration

Defines how map labels are displayed.

Constants

Name Description

hidden Map labels are not shown on top of imagery.

visible Map labels are shown on top of imagery.

Methods

Name Definition Return Value Description

isValid isValid(labelOverlay:LabelOverlay) boolean Determines whether

the specified

labelOverlay is a

supported

LabelOverlay.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

Page 90: Bing Maps Ajax Controls Dk 70

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map options. In this case,

// turn the label overlay on a bird's eye map off.

var mapOptions =

{

credentials:"Your Bing Maps Key",

mapTypeId: Microsoft.Maps.MapTypeId.birdseye,

center: new Microsoft.Maps.Location(37.794973,-122.393542),

zoom: 17,

labelOverlay: Microsoft.Maps.LabelOverlay.hidden

}

//Load the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

mapOptions );

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Page 91: Bing Maps Ajax Controls Dk 70

Location Class (AJAX)

Contains the altitude and coordinate values of a location on the map.

Constructor

Name Definition Description

Location Location(latitude:number,

longitude:number, altitude?:number,

altitudeReference?:AltitudeReference)

Initializes a new instance of

the Location class. The

altitude and

altitudeReference

parameters default to

undefined.

Properties

Name Type Description

altitude number The altitude of the location.

altitudeReference AltitudeReference The reference from which

the altitude is measured.

latitude number The latitude of the location.

longitude number The longitude of the

location.

Static Methods

Name Definition Return

Value

Description

areEqual areEqual(location1:Location,

location2:Location)

boolean Determines if

the specified

Location

objects are

equal.

normalizeLongitude normalizeLongitude(longitude:number) number Normalizes

Page 92: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

the specified

longitude so

that it is

between -180

and 180.

Methods

Name Definition Return Value Description

clone clone() Location Returns a copy of the

Location object.

toString toString() string Converts the Location

object to a string.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

Page 93: Bing Maps Ajax Controls Dk 70

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:

"Bing Maps Key"});

}

function SetLocation()

{

// Parse the input string

var latLongArray = (document.getElementById("txtlatlong").value).split(",");

// Retrieve the latitude and longitude values- normalize the longitude value

var latVal = parseInt(latLongArray[0]);

var longVal =

Microsoft.Maps.Location.normalizeLongitude(parseInt(latLongArray[1]));

// Set the map center

map.setView({center:new Microsoft.Maps.Location(latVal, longVal)});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:600px; height:600px;"></div>

Latitude, Longitude: <input id="txtlatlong" type="text" value="40, -120"/>

<input type="button" value="Set center location" onclick="SetLocation();"/>

</body>

</html>

LocationRect Class

Represents a rectangle on the map.

Page 94: Bing Maps Ajax Controls Dk 70

Constructor

Name Definition Description

LocationRect LocationRect(center:Location,

width:number, height:number)

Initializes a new instance

of the LocationRect class.

Properties

Name Type Description

center Location The location that defines the

center of the rectangle.

height number The height, in degrees, of the

rectangle.

width number The width, in degrees, of the

rectangle.

Static Methods

Name Definition Return

Value

Description

fromCorn

ers

fromCorners(northwest:Loc

ation, southeast:Location)

Location

Rect

Returns a LocationRect using the

specified locations for the northwest and

southeast corners.

fromEdge

s

fromEdges(north:number,

west:number,

south:number,

east:number,

altitude:number,

altitudeReference:Altitude

Reference)

Location

Rect

Returns a LocationRect using the

specified northern and southern latitudes

and western and eastern longitudes for

the rectangle boundaries.

fromLocat

ions

fromLocations(list of

locations/array)

Location

Rect

Returns a LocationRect using a list of

locations or an array of locations.

To provide a list of locations:

Microsoft.Maps.LocationRect.fromLocati

Page 95: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

ons(location1, location2, location3);

To provide an array of locations:

var locations = [location1, location2,

location3];

Microsoft.Maps.LocationRect.fromLocati

ons(locations);

fromStrin

g

fromString(string:string) Location

Rect

Creates a LocationRect from a string with

the following format:

"north,west,south,east". North, west,

south and east specify the coordinate

number values.

Methods

Name Definition Return Value Description

clone clone() LocationRect Returns a copy of

the LocationRect

object.

contains contains(location:Location) boolean Returns whether

the specified

Location is within

the LocationRect.

getEast getEast() number Returns the

longitude that

defines the

eastern edge of

the LocationRect.

getNorth getNorth() number Returns the

latitude that

defines the

northern edge of

the LocationRect.

getNorthwest getNorthwest() Location Returns the

Location that

defines the

Page 96: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

northwest corner

of the

LocationRect.

getSouth getSouth() number Returns the

latitude that

defines the

southern edge of

the LocationRect.

getSoutheast getSoutheast() Location Returns the

Location that

defines the

southeast corner

of the

LocationRect.

getWest getWest() number Returns the

latitude that

defines the

western edge of

the LocationRect.

intersects intersects(rect:LocationRect) boolean Returns whether

the specified

LocationRect

intersects with this

LocationRect.

toString toString() string Converts the

LocationRect

object to a string.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Page 97: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:

"Bing Maps Key"});

var viewRect = Microsoft.Maps.LocationRect.fromCorners(new

Microsoft.Maps.Location(40,-120), new Microsoft.Maps.Location(35,-115));

map.setView({bounds: viewRect});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Map Class

Represents a map.

Constructor

Page 98: Bing Maps Ajax Controls Dk 70

Name Definition Description

Map Map(containerElement:node,

options?:MapOptions or

ViewOptions)

Initializes a new instance of

the Map class.

Properties

Name Type Description

entities EntityCollection The map‟s entities. Use this

property to add or remove

entities from the map.

Static Methods

Name Definition Return Value Description

getVersion getVersion() string Returns the version of

the map control.

Methods

Name Definition Return Value Description

blur blur() None Removes focus from the map

control so that it does not

respond to keyboard events.

dispose dispose() None Deletes the Map object and

releases any associated

resources.

focus focus() None Applies focus to the map

control so that it responds to

keyboard events.

getBounds getBounds() LocationRect Returns the location rectangle

that defines the boundaries of

the current map view.

Page 99: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

getCenter getCenter() Location Returns the location of the

center of the current map

view.

getCopyrights getCopyrights(callback:fu

nction)

string[] Returns to the specified

callback an array of strings

representing the attributions of

the imagery currently

displayed on the map.

getCredentials getCredentials(callback:f

unction)

None Gets the session ID. This

method calls the callback

function with the session ID as

the first parameter.

map.getCredentials(function(

credentials)

{

if(credentials !==

null) { /* Valid session

Id. Use it to call REST

service */ }

});

getHeading getHeading() number Returns the heading of the

current map view.

getHeight getHeight() number Returns the height of the map

control.

getImageryId getImageryId() string Returns the string that

represents the imagery

currently displayed on the

map.

getMapTypeId getMapTypeId() string Returns a string that

represents the current map

type displayed on the map.

Valid map types are listed in

the MapTypeId Enumeration

topic.

getMetersPerPix

el

getMetersPerPixel() number Returns the current scale in

meters per pixel of the center

of the map.

Page 100: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

getMode getMode() MapMode Returns the current map

mode.

getModeLayer getModeLayer() Node Returns the map‟s mode node.

getOptions getOptions() MapOptions Returns the map options that

have been set. Note that if an

option is not set, then the

default value for that option is

assumed and getOptions

returns undefined for that

option.

getPageX getPageX() number Returns the x coordinate of the

top left corner of the map

control, relative to the page.

getPageY getPageY() number Returns the y coordinate of the

top left corner of the map

control, relative to the page.

getRootElement getRootElement() Node Returns the map‟s root node.

getTargetBounds getTargetBounds() LocationRect Returns the location rectangle

that defines the boundaries of

the view to which the map is

navigating.

getTargetCenter getTargetCenter() Location Returns the center location of

the view to which the map is

navigating.

getTargetHeadin

g

getTargetHeading() number Returns the heading of the

view to which the map is

navigating.

getTargetMeters

PerPixel

getTargetMetersPerPixel() number Returns the scale in meters

per pixel of the center of the

view to which the map is

navigating.

getTargetZoom getTargetZoom() number Returns the zoom level of the

view to which the map is

navigating.

getUserLayer getUserLayer() Node Returns the map‟s user node.

Page 101: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

getViewportX getViewportX() number Returns the x coordinate of the

viewport origin (the center of

the map), relative to the page.

getViewportY getViewportY() number Returns the y coordinate of the

viewport origin (the center of

the map), relative to the page.

getWidth getWidth() number Returns the width of the map

control.

getZoom getZoom() number Returns the zoom level of the

current map view.

getZoomRange getZoomRange() object:{min:nu

mber, max:

number}

Returns the range of valid

zoom levels for the current

map view.

isMercator isMercator() boolean Returns whether the map is in

a regular Mercator nadir

mode.

isRotationEnable

d

isRotationEnabled() boolean Returns true if the current map

type allows the heading to

change; false if the display

heading is fixed.

setMapType setMapType(mapTypeId:strin

g)

None Sets the current map type.

The specified mapTypeId must

be a valid map type ID or a

registered map type ID. Valid

map type IDs are listed in the

MapTypeId Enumeration topic.

setOptions setOptions({height:numbe

r, width: number})

None Sets the height and width of

the map.

setView setView(options:ViewOptio

ns)

None Sets the map view based on

the specified options.

tryLocationToPix

el

tryLocationToPixel(locati

on:Location |Location[],

reference?:PixelReference

)

null, Point, or

Point[]

Converts a specified Location

to a Point on the map relative

to the specified

PixelReference. If reference is

not specified,

PixelReference.viewport is

Page 102: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

used. If the map is not able to

convert the Location, null is

returned.

Alternatively, converts an

array of Locations and returns

an array of Points if all

locations were converted. If

any of the conversions fail, null

is returned.

tryPixelToLocati

on

tryPixelToLocation(point:

Point |Point[],

reference?:PixelReference

)

null, Location,

or Location[]

Converts a specified Point to a

Location on the map relative to

the specified PixelReference.

If reference is not specified,

PixelReference.viewport is

used. If the map is not able to

convert the Point, null is

returned.

Alternatively, converts an

array of Points and returns an

array of Locations if all points

were converted. If any of the

conversions fail, null is

returned.

Events

Name Arguments Description

click eventArgs:MouseEventArgs Occurs when the mouse is

used to click the map.

copyrightchanged None Occurs when the copyright

of the map changes.

dblclick eventArgs:MouseEventArgs Occurs when the mouse is

used to double click the

map.

imagerychanged None Occurs when the underlying

imagery used by the map

Page 103: Bing Maps Ajax Controls Dk 70

Name Arguments Description

changes. This is different

from the maptypechanged

event, which occurs when

the map type being used is

changed.

keydown eventArgs:KeyEventArgs Occurs when a keyboard

key is pressed down.

keypress eventArgs:KeyEventArgs Occurs when a keyboard

key is pressed.

keyup eventArgs:KeyEventArgs Occurs when a keyboard

key that is pressed down is

released.

maptypechanged None Occurs when the map type

changes.

mousedown eventArgs:MouseEventArgs Occurs when the left mouse

button is pressed when the

mouse cursor is over the

map.

mousemove eventArgs:MouseEventArgs Occurs when the mouse

cursor moves over the map.

mouseout eventArgs:MouseEventArgs Occurs when the mouse

cursor moves out of the area

covered by the map.

mouseover eventArgs:MouseEventArgs Occurs when the mouse is

over the map.

mouseup eventArgs:MouseEventArgs Occurs when the left mouse

button is lifted up when the

mouse cursor is over the

map.

mousewheel eventArgs:MouseEventArgs Occurs when the mouse

wheel is used when the

mouse cursor is over the

map.

rightclick eventArgs:MouseEventArgs Occurs when the right

mouse button is used to

click the map.

Page 104: Bing Maps Ajax Controls Dk 70

Name Arguments Description

targetviewchanged None Occurs when the view

towards which the map is

navigating changes.

tiledownloadcomplete None Occurs when all the map

tiles of a map view have

loaded.

viewchange None Occurs for every frame of a

map view change.

viewchangeend None Occurs when the map view

is done changing.

This event occurs when a

view is the same for one

frame of a map view

change. For example, if the

mouse is used to drag the

map to change the view, but

pauses during the drag

(without releasing the

mouse button),

viewchangeend occurs

twice. You can use the

addThrottledHandler method

to customize the number of

events that occur.

viewchangestart None Occurs when the map view

starts changing.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Page 105: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

MapMode Class (AJAX)

Represents a map mode.

Mercator Map Mode Methods The following methods are available for the MapTypeId values aerial, auto, birdseye,

collinsBart, mercator, ordnanceSurvey, and road.

Page 106: Bing Maps Ajax Controls Dk 70

Name Definition Retu

rn

Valu

e

Description

setViewChangeEn

dDelay

setViewChangeEndDelay(delay

:number)

Non

e

Sets the specified number of

milliseconds after the last

viewchange event before

viewchangeend event is fired.

This allows you to control how

often the viewchangeend event is

fired when the map is panned.

For example, to set a 1 second

delay before the viewchangeend

event fires, do the following:

map.getMode().setViewChangeEndDe

lay(1000);

MapOptions Object

Represents options to customize the map that is displayed.

Properties

Name Type Description

backgroundColor Color Class The color to use for the map control

background. The default color is

#F4F2EE.

This property can only be set when

using the Map constructor.

credentials string The Bing Maps Key used to

authenticate the application.

This property can only be set when

using the Map constructor.

customizeOverlays boolean A boolean indicating whether to load

the new Bing Maps overlay styles.

The default value is false.

Page 107: Bing Maps Ajax Controls Dk 70

Name Type Description

This property setting only takes

effect if the

Microsoft.Maps.Overlays.Style

module is loaded.

disableBirdseye boolean A boolean indicating whether to

disable the bird‟s eye map type. The

default value is false. If this property

is set to true, bird‟s eye will be

removed from the map navigation

control and the birdseye MapTypeId

is disabled. Additionally, the auto

map type will only display road or

aerial.

This property can only be set when

using the Map constructor.

disableKeyboardInput boolean A boolean value indicating whether

to disable the map‟s response to

keyboard input. The default value is

false.

disableMouseInput boolean A boolean value indicating whether

to disable the map‟s response to

mouse input. The default value is

false.

disablePanning boolean A boolean value indicating whether

to disable the user‟s ability to pan

the map. The default value is false.

disableTouchInput boolean A boolean value indicating whether

to disable the map‟s response to

touch input. The default value is

false.

disableUserInput boolean A boolean value indicating whether

to disable the map‟s response to any

user input. The default value is

false.

disableZooming boolean A boolean value indicating whether

to disable the user‟s ability to zoom

in or out. The default value is false.

Page 108: Bing Maps Ajax Controls Dk 70

Name Type Description

enableClickableLogo boolean A boolean value indicating whether

the BingTM

logo on the map is

clickable. The default value is true.

This property can only be set when

using the Map constructor.

enableSearchLogo boolean A boolean value indicating whether

to enable the BingTM

hovering search

logo on the map. The default value is

true.

This property can only be set when

using the Map constructor.

fixedMapPosition boolean A boolean indicating whether the div

containing the map control is fixed

on the page and the browser will not

be resized. The default value is

false. In this case the map control

redraws if necessary based on any

div or window resize.

If this property is set to true, the map

control does not check the size of

the div containing it every time the

map view changes, thus increasing

the performance of the control.

This property can only be set when

using the Map constructor.

height number The height of the map. The default

value is null. If no height is

specified, the height of the div is

used. If height is specified, then

width must be specified as well.

inertiaIntensity number A number between 0 and 1

specifying the intensity of the inertia

animation effect. The inertia effect

increases as the intensity value gets

larger. The default value is .85.

Setting this property to 0 indicates

no inertia effect.

The useInertia property must be set

Page 109: Bing Maps Ajax Controls Dk 70

Name Type Description

to true for the inertiaIntensity value

to have an effect.

showBreadcrumb boolean A boolean value indicating whether

to display the “breadcrumb control”.

The breadcrumb control shows the

current center location‟s geography

hierarchy. For example, if the

location center is Seattle, the

breadcrumb control displays “World .

United States . WA”. The default

value is false.

The breadcrumb control displays

best when the width of the map is at

least 300 pixels.

This property can only be set when

using the Map constructor.

showCopyright boolean A boolean value indicating whether

or not to show the map copyright.

The default value is true.

This property can only be set when

using the Map constructor.

Bing Maps Platform API

Terms of Use requires

copyright information to be

displayed. Only set this

option to false when

copyright information is

displayed through alternate

means.

showDashboard boolean A boolean value indicating whether

to show the map navigation control.

The default value is true.

This property can only be set when

using the Map constructor.

showMapTypeSelector boolean A boolean value indicating whether

to show the map type selector in the

map navigation control. The default

Page 110: Bing Maps Ajax Controls Dk 70

Name Type Description

value is true.

This property can only be set when

using the Map constructor.

showScalebar boolean A boolean value indicating whether

to show the scale bar. The default

value is true.

This property can only be set when

using the Map constructor.

tileBuffer number A number between 0 and 4

specifying how many tiles to use as

a buffer around the map view. The

default value is 0.

useInertia boolean A boolean value indicating whether

to use the inertia animation effect

during map navigation. The default

value is true.

width number The width of the map. The default

value is null. If no width is specified,

the width of the div is used. If width

is specified, then height must be

specified as well.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

Page 111: Bing Maps Ajax Controls Dk 70

function GetMap()

{

// Set the map and view options, setting the map style to Road and

// removing the user's ability to change the map style

var mapOptions = {credentials:"Bing Maps Key",

height: 400,

width: 400,

mapTypeId: Microsoft.Maps.MapTypeId.road,

showMapTypeSelector: false};

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

mapOptions);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative;"></div>

</body>

</html>

MapTypeId Enumeration

Contains identifiers for the imagery displayed on the map.

Constants

Name Description

aerial The aerial map style is being used.

Page 112: Bing Maps Ajax Controls Dk 70

Name Description

auto The map is set to choose the best imagery for

the current view.

birdseye The bird‟s eye map type is being used.

collinsBart Collin‟s Bart (mkt=en-gb) map type is being

used.

mercator The Mercator style is being used.

ordnanceSurvey Ordnance Survey (mkt=en-gb) map type is

being used.

road The road map style is being used.

Example This code sample sets the map imagery to Collin‟s Bart (collinsBart). Since this imagery is only

supported for the en-gb culture, the mkt parameter of the control is set to this culture.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&mkt=en-

gb"></script>

<script type="text/javascript">

function GetMap()

{

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key", center: new Microsoft.Maps.Location(51.5, -.1), zoom: 10,

mapTypeId:Microsoft.Maps.MapTypeId.collinsBart});

}

Page 113: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:600px; height:600px;"></div>

</body>

</html>

See Also Changing the Map View

Returning a Localized Map

Module Loading Methods

The following methods allow you to register and load your own modules for use by the map

control. More information about building your own module is in the Building Your Own Module

topic.

Methods

Name Definition Return

Value

Description

loadModule loadModule(moduleKey:string,

options:function)

None Loads the specified registered

module, making its functionality

available. An optional function

can be specified that is called

when the module is loaded.

To register a module, use the

registerModule method.

The following Bing Maps

modules are available:

Microsoft.Maps.Directions

Microsoft.Maps.Traffic

Microsoft.Maps.Venue

Maps

moduleLoaded moduleLoaded(moduleKey:string) None Signals that the specified

Page 114: Bing Maps Ajax Controls Dk 70

Name Definition Return

Value

Description

module has been loaded and if

specified, calls the callback

function in loadModule. Call

this method at the end of your

module script.

registerModule registerModule(moduleKey:string,

scriptUrl:string,

options:{styleURLs})

None Registers a module with the

map control. The name of the

module is specified in

moduleKey, the module script

is defined in scriptUrl, and the

options provides the location of

a *.css file to load with the

module.

To minimize possible

conflicts with other

custom modules,

choose a unique

module name (defined

in moduleKey). For

example, you can use

your company name in

the name of the

module.

Once you have registered a

module, you can make its

functionality available by

loading it using loadModule.

Example The code below shows how to register and load a module, named MyModule1. The code for

MyModule1 is found in the next code section.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

Page 115: Bing Maps Ajax Controls Dk 70

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map;

function myModuleLoaded()

{

alert("myModule has loaded.");

// Use the function provided by the newly loaded module

var myModule = new MyModule(map);

myModule.HelloWorld();

}

function GetMap()

{

// Initialize the map

var options = {credentials: "Bing Maps Key"};

map = new Microsoft.Maps.Map(document.getElementById('mapDiv'), options);

// Register and load a new module

Microsoft.Maps.registerModule("MyModule1",

"http://example.com/mymodule.js");

Microsoft.Maps.loadModule("MyModule1", { callback: myModuleLoaded });

}

Page 116: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

// mymodule.js

function MyModule(map)

{

this.HelloWorld = function()

{

alert("Hello World - map Center is " + map.getCenter().toString());

}

}

Microsoft.Maps.moduleLoaded('MyModule1');

See Also Building Your Own Module

MouseEventArgs Object

Contains the arguments for mouse events.

Properties

Name Type Description

eventName string The event that occurred.

handled boolean A boolean indicating whether

the event is handled. If this

property is set to true, the

default map control behavior

for the event is cancelled.

Page 117: Bing Maps Ajax Controls Dk 70

Name Type Description

isPrimary boolean A boolean indicating if the

primary button (such as the left

mouse button or a tap on a

touch screen) was used.

isSecondary boolean A boolean indicating if the

secondary mouse button (such

as the right mouse button) was

used.

isTouchEvent boolean A boolean indicating whether

the event that occurred was a

touch event.

originalEvent object The original browser event.

pageX number The x-value of the pixel

coordinate on the page of the

mouse cursor.

pageY number The y-value of the pixel

coordinate on the page of the

mouse cursor.

target object The object that fired the event.

targetType string The type of the object that fired

the event. Valid values include

the following: „map‟, „polygon‟,

„polyline‟, or „pushpin‟

wheelDelta number The number of units that the

mouse wheel has changed.

Methods

Name Definition Return Value Description

getX getX() number Returns the x-value of

the pixel coordinate,

relative to the map, of

the mouse.

getY getY() number Returns the y-value of

Page 118: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

the pixel coordinate,

relative to the map, of

the mouse.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

//Add handler for the map click event.

Microsoft.Maps.Events.addHandler(map, 'click', displayEventInfo);

}

function displayEventInfo(e) {

if (e.targetType == "map") {

Page 119: Bing Maps Ajax Controls Dk 70

var point = new Microsoft.Maps.Point(e.getX(), e.getY());

var loc = e.target.tryPixelToLocation(point);

document.getElementById("textBox").value = loc.latitude + ", " +

loc.longitude;

}

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div><br>

<b>Click the map to display the coordinate values at that point.</b><br>

Latitude, Longitude:

<input id='textBox' type="text" style="width:250px;"/>

</body>

</html>

PixelReference Enumeration

Contains constants used to show how pixels are defined.

Constants

Name Description

control The pixel is defined relative to the map control‟s

root element, where the top left corner of the

map control is (0, 0). Using this option might

cause a page reflow which may negatively

impact performance.

page The pixel is defined relative to the page, where

the top left corner of the HTML page is (0, 0).

This option is best used when working with

mouse or touch events. Using this option might

cause a page reflow which may negatively

Page 120: Bing Maps Ajax Controls Dk 70

Name Description

impact performance.

viewport The pixel is defined in viewport coordinates,

relative to the center of the map, where the

center of the map is (0, 0). This option is best

used for positioning geo-aligned entities added

to the user layer.

Methods

Name Definition Return Value Description

isValid isValid(reference:PixelReference) boolean Determines whether

the specified

reference is a

supported

PixelReference.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

Page 121: Bing Maps Ajax Controls Dk 70

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Add handler for the map click event.

Microsoft.Maps.Events.addHandler(map, 'click', displayEventInfo);

}

function displayEventInfo(e) {

if (e.targetType == "map") {

var point = new Microsoft.Maps.Point(e.pageX, e.pageY,

Microsoft.Maps.PixelReference.page);

var loc = e.target.tryPixelToLocation(point,

Microsoft.Maps.PixelReference.page);

if (loc!=null)

{

alert("The location " + loc.latitude + ", " + loc.longitude + " was

clicked.");

}

}

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div><br>

<b>Click the map to display the coordinate values at that point.</b><br>

Page 122: Bing Maps Ajax Controls Dk 70

</body>

</html>

Point Class

Represents a point on the map.

Constructor

Name Definition Description

Point Point(x:number, y:number) Initializes a new instance of

the Point class.

Properties

Name Type Description

x number The x value of the coordinate.

y number The y-value of the coordinate.

Static Methods

Name Definition Return Value Description

areEqual areEqual(point1:Point,

point2:Point)

boolean Determines if the

specified points are

equal.

clone clone(Point) Point Returns a copy of the

Point object.

Methods

Page 123: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

clone clone() Point Returns a copy of the

Point object.

toString toString() string Converts the Point

object into a string.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key "});

// Add handler for the map click event.

Microsoft.Maps.Events.addHandler(map, 'click', displayEventInfo);

}

Page 124: Bing Maps Ajax Controls Dk 70

function displayEventInfo(e) {

if (e.targetType == "map") {

var point = new Microsoft.Maps.Point(e.getX(), e.getY());

var loc = e.target.tryPixelToLocation(point);

if (loc!=null)

{

alert("The location " + loc.latitude + ", " + loc.longitude + " was

clicked.");

}

}

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div><br>

<b>Click the map to display the coordinate values at that point.</b><br>

</body>

</html>

Polygon Class (AJAX)

Represents a polygon on the map.

Constructor

Name Definition Description

Polygon Polygon(locations:Location[],

options?:PolygonOptions)

Initializes a new instance of

the Polygon class.

Page 125: Bing Maps Ajax Controls Dk 70

Methods

Name Definition Return Value Description

getFillColor getFillColor() Color Returns the

color of the

inside of the

polygon.

getLocations getLocations() Location[] Returns the

locations that

define the

corners of the

polygon.

getStrokeColor getStrokeColor() Color Returns the

color of the

outline of the

polygon.

getStrokeDashArray getStrokeDashArray() string Returns the

string that

represents the

stroke/gap

sequence

used to draw

the outline of

the polygon.

getStrokeThickness getStrokeThickness() number Returns the

thickness of

the outline of

the polygon.

getVisible getVisible() boolean Returns

whether the

polygon is

visible. A

value of false

indicates that

the polygon is

hidden,

although it is

still an entity

on the map.

Page 126: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

setLocations setLocations(locations:Location[]) None Sets the

locations that

define the

corners of the

polygon.

setOptions setOptions(options:PolygonOptions) None Sets options

for the

polygon.

toString toString() string Converts the

Polygon object

to a string.

Events

Name Arguments Description

click eventArgs:MouseEventArgs Occurs when the mouse is

used to click the polygon.

dblclick eventArgs:MouseEventArgs Occurs when the mouse is

used to double click the

polygon.

entitychanged object: {entity:Entity} Occurs when the location

of the polygon or any of

the polygon‟s options

change.

mousedown eventArgs:MouseEventArgs Occurs when the left

mouse button is pressed

when the mouse is over

the polygon.

mouseout eventArgs:MouseEventArgs Occurs when the mouse

cursor moves out of the

area covered by the

polygon.

mouseover eventArgs:MouseEventArgs Occurs when the mouse is

over the polygon.

mouseup eventArgs:MouseEventArgs Occurs when the left

Page 127: Bing Maps Ajax Controls Dk 70

Name Arguments Description

mouse button is lifted up

when the mouse is over

the polygon.

rightclick eventArgs:MouseEventArgs Occurs when the right

mouse button is used to

click the polygon.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(20,-20);

var location2 = new Microsoft.Maps.Location(20,20);

var location3 = new Microsoft.Maps.Location(-20,20);

var location4 = new Microsoft.Maps.Location(-20,-20);

Page 128: Bing Maps Ajax Controls Dk 70

// Create a polygon

var vertices = new Array(location1, location2, location3, location4,

location1);

var polygoncolor = new Microsoft.Maps.Color(100,100,0,100);

var polygon = new Microsoft.Maps.Polygon(vertices,{fillColor: polygoncolor,

strokeColor: polygoncolor});

// Add the shape to the map

map.entities.push(polygon)

// Set the view

map.setView({bounds: Microsoft.Maps.LocationRect.fromLocations(vertices)});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

PolygonOptions Object

Represents the options for a polygon.

Properties

Name Type Description

fillColor Color The color of the inside of the

polygon.

strokeColor Color The color of the outline of the

polygon.

Page 129: Bing Maps Ajax Controls Dk 70

Name Type Description

strokeDashArray string A string representing the

stroke/gap sequence to use to

draw the outline of the

polygon. The string must be in

the format S, G, S*, G*, where

S represents the stroke length

and G represents gap length.

Stroke lengths and gap

lengths can be separated by

commas or spaces. For

example, a stroke dash string

of “1 4 2 1” would draw the

polygon outline with a dash,

four spaces, two dashes, one

space, and then repeated.

strokeThickness number The thickness of the outline of

the polygon.

visible boolean A boolean indicating whether

to show or hide the polygon. A

value of false indicates that

the polygon is hidden,

although it is still an entity on

the map.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

Page 130: Bing Maps Ajax Controls Dk 70

function GetMap()

{

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(20,-20);

var location2 = new Microsoft.Maps.Location(20,20);

var location3 = new Microsoft.Maps.Location(-20,20);

var location4 = new Microsoft.Maps.Location(-20,-20);

// Create a polygon

var vertices = new Array(location1, location2, location3, location4,

location1);

var polygon = new Microsoft.Maps.Polygon(vertices,

{fillColor: new Microsoft.Maps.Color(100,100,0,100),

strokeColor: new Microsoft.Maps.Color(200,0,100,100),

strokeThickness: 5});

// Add the shape to the map

map.entities.push(polygon)

// Set the view

map.setView({bounds: Microsoft.Maps.LocationRect.fromLocations(vertices)});

}

</script>

</head>

Page 131: Bing Maps Ajax Controls Dk 70

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Polyline Class

Represents a polyline on the map.

Constructor

Name Definition Description

Polyline Polyline(locations:Location[],

options?:PolylineOptions)

Initializes a new instance of

the Polyline class.

Methods

Name Definition Return Value Description

getLocations getLocations() Location[] Returns the

locations that

define the

polyline.

getStrokeColor getStrokeColor() Color Returns the

color of the

polyline.

getStrokeDashArray getStrokeDashArray() string Returns the

string that

represents the

stroke/gap

sequence

used to draw

the polyline.

getStrokeThickness getStrokeThickness() number Returns the

thickness of

the polyline.

Page 132: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

getVisible getVisible() boolean Returns

whether the

polyline is

visible. A

value of false

indicates that

the polyline is

hidden,

although it is

still an entity

on the map.

setLocations setLocations(locations:Location[]) None Sets the

locations that

define the

polyline.

setOptions setOptions(options:PolylineOptions) None Sets options

for the

polyline.

toString toString() string Converts the

Polyline object

to a string.

Events

Name Arguments Description

click eventArgs:MouseEventArgs Occurs when the mouse is

used to click the polyline.

dblclick eventArgs:MouseEventArgs Occurs when the mouse is

used to double click the

polyline.

entitychanged object: {entity:Entity} Occurs when the location

of the polyline or any of the

polyline‟s options change.

mousedown eventArgs:MouseEventArgs Occurs when the left

mouse button is pressed

when the mouse is over

Page 133: Bing Maps Ajax Controls Dk 70

Name Arguments Description

the polyline.

mouseout eventArgs:MouseEventArgs Occurs when the mouse

cursor moves out of the

area covered by the

polyline.

mouseover eventArgs:MouseEventArgs Occurs when the mouse is

over the polyline.

mouseup eventArgs:MouseEventArgs Occurs when the left

mouse button is lifted up

when the mouse is over

the polyline.

rightclick eventArgs:MouseEventArgs Occurs when the right

mouse button is used to

click the polyline.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

Page 134: Bing Maps Ajax Controls Dk 70

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(-20,-20);

var location2 = new Microsoft.Maps.Location(20,-20);

var location3 = new Microsoft.Maps.Location(20,20);

var location4 = new Microsoft.Maps.Location(60, 20);

var location5 = new Microsoft.Maps.Location(60, 60);

// Create a polyline

var lineVertices = new Array(location1, location2, location3, location4,

location5);

var line = new Microsoft.Maps.Polyline(lineVertices);

// Add the polyline to the map

map.entities.push(line);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

PolylineOptions Object

Represents the options for a polyline.

Page 135: Bing Maps Ajax Controls Dk 70

Properties

Name Type Description

strokeColor Color The color of the polyline.

strokeDashArray string A string representing the

stroke/gap sequence to use to

draw the polyline. The string

must be in the format S, G, S*,

G*, where S represents the

stroke length and G represents

gap length. Stroke lengths and

gap lengths can be separated

by commas or spaces. For

example, a stroke dash string

of “1 4 2 1” would draw the

polyline with a dash, four

spaces, two dashes, one

space, and then repeated.

strokeThickness number The thickness of the polyline.

visible boolean A boolean indicating whether

to show or hide the polyline. A

value of false indicates that

the polyline is hidden, although

it is still an entity on the map.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

Page 136: Bing Maps Ajax Controls Dk 70

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Your Bing Maps Key"});

// Create the locations

var location1 = new Microsoft.Maps.Location(-20,-20);

var location2 = new Microsoft.Maps.Location(20,-20);

var location3 = new Microsoft.Maps.Location(20,20);

var location4 = new Microsoft.Maps.Location(60, 20);

var location5 = new Microsoft.Maps.Location(60, 60);

// Create a polyline

var lineVertices = new Array(location1, location2, location3, location4,

location5);

var line = new Microsoft.Maps.Polyline(lineVertices,{strokeColor:new

Microsoft.Maps.Color(200, 100, 0, 100), strokeThickness:5, strokeDashArray:"5 2"});

// Add the polyline to the map

map.entities.push(line);

}

</script>

</head>

<body onload="GetMap();">

Page 137: Bing Maps Ajax Controls Dk 70

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Position Class

Represents the position of a user on a map.

Properties

Name Type Description

coords Coordinates The position as a W3C

Coordinates object.

timestamp string The time when the position was

determined, in the form of a

DOMTimeStamp.

See Also GeoLocationProvider Class

PositionCircleOptions Object

Contains options for the addAccuracyCircle method of the GeoLocationProvider class.

Properties

Name Type Description

polygonOptions PolygonOptions The polygon options for the

geo location accuracy circle.

showOnMap boolean A boolean indicating whether

to display the geo location

accuracy circle. The default

value is true. If this property

is set to false, a geo location

Page 138: Bing Maps Ajax Controls Dk 70

Name Type Description

accuracy circle is not drawn

and any existing accuracy

circles are removed.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map;

var geoLocationProvider;

function GetMap()

{

// Set the map options

var mapOptions = {credentials:"Bing Maps Key"};

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), mapOptions);

// Initialize the location provider

Page 139: Bing Maps Ajax Controls Dk 70

geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(map);

// Get the user's current location

geoLocationProvider.getCurrentPosition({successCallback:drawCircle,

showAccuracyCircle:false});

}

function drawCircle(args)

{

// Draw the accuracy circle using a different color

geoLocationProvider.addAccuracyCircle(args.center, 50000, 50000,

{polygonOptions:{fillColor:new Microsoft.Maps.Color(100,100,0,100), strokeColor:new

Microsoft.Maps.Color(100,100,0,100)}});

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

PositionError Class

Represents the error when a user position request does not succeed.

Properties

Name Type Description

code number The error code.

Any one of the following error

Page 140: Bing Maps Ajax Controls Dk 70

Name Type Description

codes may be returned:

0 An error occurred that is

not covered by other error

codes.

1 The application does not

have permission to use the

GeoLocation API.

2 The position of the host

device could not be

determined.

3 The specified timeout was

exceeded.

message string The error message. This

message is for the developer

and is not intended to be

displayed to the end user.

See Also GeoLocationProvider Class

PositionOptions Object

Contains options for the getCurrentPosition method of the GeoLocationProvider class.

Properties

Name Type Description

enableHighAccuracy boolean A boolean indicating whether

only a high accuracy result

should be retrieved. The

default value is false. Setting

this property to true may

result in a slower response

time.

errorCallback function The function to call when an

error occurs during the user

Page 141: Bing Maps Ajax Controls Dk 70

Name Type Description

location request. The callback

function must accept one

argument. The argument

object contains two properties,

internalError, a PositionError

type, and errorCode, a

number.

Any one of the following

errorCode values may be

returned:

1 The application origin

does not have permission

to use the GeoLocation

API.

2 The position of the user

could not be determined

because of a device

failure.

3 The time specified in

timeout has been

exceeded.

4 A request is already in

process.

5 The user‟s browser

does not support geo

location.

maximumAge number A number indicating the

acceptable age, in

milliseconds, of a cached geo

location result to return. The

default value is 0, which

indicates a new (not cached)

result will be retrieved.

showAccuracyCircle boolean A boolean indicating whether

to display the polygon on the

map that shows the accuracy

of the returned geo location.

The default value is true.

successCallback function The function to call when the

user‟s location was

Page 142: Bing Maps Ajax Controls Dk 70

Name Type Description

successfully retrieved. The

callback function must accept

one argument. The argument

object contains two properties,

center, a Location type, and

position, a Position type.

timeout number The length of time, in

milliseconds, to allow for the

geo location request to return.

By default there is no timeout.

updateMapView boolean A boolean indicating whether

to update the map view with

the best view of the user‟s

location (if the request is

successful). The default value

is true.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map;

function GetMap()

{

Page 143: Bing Maps Ajax Controls Dk 70

// Set the map options

var mapOptions = {credentials:"Bing Maps Key"};

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), mapOptions);

// Initialize the location provider

var geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(map);

// Get the user's current location

geoLocationProvider.getCurrentPosition({successCallback:displayCenter});

}

function displayCenter(args)

{

// Display the user location when the geo location request returns

alert("The user's location is " + args.center);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Page 144: Bing Maps Ajax Controls Dk 70

Pushpin Class (AJAX)

Defines a pushpin on the map.

Constructor

Name Definition Description

Pushpin Pushpin(location:Location,

options?:PushpinOptions)

Initializes a new instance of

the Pushpin class.

Methods

Name Definition Return Value Description

getAnchor getAnchor() Point Returns the

point on the

pushpin icon

which is

anchored to the

pushpin location.

An anchor of

(0,0) is the top

left corner of the

icon.

getIcon getIcon() string Returns the

pushpin icon.

getHeight getHeight() number Returns the

height of the

pushpin, which

is the height of

the pushpin icon.

getLocation getLocation() Location Returns the

location of the

pushpin.

getText getText() string Returns the text

associated with

the pushpin.

Page 145: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

getTextOffset getTextOffset() Point Returns the

amount the text

is shifted from

the pushpin icon.

getTypeName getTypeName() string Returns the type

of the pushpin.

getVisible getVisible() boolean Returns whether

the pushpin is

visible. A value

of false

indicates that the

pushpin is

hidden, although

it is still an entity

on the map.

getWidth getWidth() number Returns the

width of the

pushpin, which

is the width of

the pushpin icon.

getZIndex getZIndex() number Returns the z-

index of the

pushpin with

respect to other

items on the

map.

setLocation setLocation(location:Location) None Sets the location

of the pushpin.

setOptions setOptions(options:PushpinOptions) None Sets options for

the pushpin.

toString toString() string Converts the

Pushpin object

to a string.

Events

Page 146: Bing Maps Ajax Controls Dk 70

Name Arguments Description

click eventArgs:MouseEventArgs Occurs when the mouse is

used to click the pushpin.

dblclick eventArgs:MouseEventArgs Occurs when the mouse is

used to double click the

pushpin.

drag eventArgs:MouseEventArgs Occurs when the pushpin

is being dragged.

dragend eventArgs:MouseEventArgs Occurs when the pushpin

stops being dragged.

dragstart eventArgs:MouseEventArgs Occurs when the pushpin

starts being dragged.

entitychanged object: {entity:Entity} Occurs when the location

of the pushpin or any of

the pushpin‟s options

change.

mousedown eventArgs:MouseEventArgs Occurs when the left

mouse button is pressed

when the mouse is over

the pushpin.

mouseout eventArgs:MouseEventArgs Occurs when the mouse

cursor moves out of the

area covered by the

pushpin.

mouseover eventArgs:MouseEventArgs Occurs when the mouse is

over the pushpin.

mouseup eventArgs:MouseEventArgs Occurs when the left

mouse button is lifted up

when the mouse is over

the pushpin.

rightclick eventArgs:MouseEventArgs Occurs when the right

mouse button is used to

click the pushpin.

Page 147: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Add a pin to the center of the map

var pin = new Microsoft.Maps.Pushpin(center, {draggable: true});

// Add a handler to the pushpin drag

Microsoft.Maps.Events.addHandler(pin, 'mouseup', DisplayLoc);

map.entities.push(pin);

}

Page 148: Bing Maps Ajax Controls Dk 70

function DisplayLoc(e){

if (e.targetType == 'pushpin'){

var pinLoc = e.target.getLocation();

alert("The location of the pushpin is now " + pinLoc.latitude + ", " +

pinLoc.longitude);

}

}

</script>

</head>

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div>

<b>Drag the pushpin to a new location.</b>

</body>

</html>

PushpinOptions Object

Represents the options for a pushpin.

Properties

Name Type Description

anchor Point The point on the pushpin icon

which is anchored to the

pushpin location. An anchor of

(0,0) is the top left corner of the

icon. The default anchor is the

bottom center of the icon.

draggable boolean A boolean indicating whether

the pushpin can be dragged to

a new position with the mouse.

Page 149: Bing Maps Ajax Controls Dk 70

Name Type Description

icon string The path of the image to use

as the pushpin icon.

height number The height of the pushpin,

which is the height of the

pushpin icon. The default value

is 39.

text string The text associated with the

pushpin.

textOffset Point The amount the text is shifted

from the pushpin icon. The

default value is (0,5).

typeName string The type of the pushpin, as a

string. The pushpin DOM

(document object model) node

created for the pushpin will

have the specified typeName.

visible boolean A boolean indicating whether to

show or hide the pushpin. The

default value is true. A value of

false indicates that the pushpin

is hidden, although it is still an

entity on the map.

width number The width of the pushpin, which

is the width of the pushpin icon.

The default value is 25.

zIndex number The z-index of the pushpin with

respect to other items on the

map.

Example This example uses the image below, named “BluePushpin.png”, as the pushpin icon.

Page 150: Bing Maps Ajax Controls Dk 70

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("myMap"),

{credentials:"Bing Maps Key"});

// Retrieve the location of the map center

var center = map.getCenter();

// Add a pin to the center of the map

var pin = new Microsoft.Maps.Pushpin(center, {icon:"BluePushpin.png",

height:50, width:50, anchor:new

Microsoft.Maps.Point(0,50), draggable: true});

map.entities.push(pin);

}

</script>

</head>

Page 151: Bing Maps Ajax Controls Dk 70

<body onload="GetMap();">

<div id='myMap' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

TileLayer Class

Represents a tile layer.

Constructor

Name Definition Description

TileLayer TileLayer(options:TileLayerOptions) Initializes a new instance

of the TileLayer class.

Methods

Name Definition Return

Type

Description

getOpacity getOpacty() number Returns the opacity of the

tile layer, defined as a

double between 0 (not

visible) and 1.

getTileSourc

e

getTileSource(projection:string) TileSourc

e

Returns the tile source of

the tile layer.

The projection parameter

accepts the following

values: mercator,

enhancedBirdseyeNorthUp,

enhancedBirdseyeSouthUp

,

enhancedBirdseyeEastUp,

enhancedBirdseyeWestUp

getZIndex getZIndex() number Returns the z-index of the

Page 152: Bing Maps Ajax Controls Dk 70

Name Definition Return

Type

Description

tile layer with respect to

other items on the map.

setOptions setOptions(options:TileLayerOptions

)

None Sets options for the tile

layer.

toString toString() string Converts the TileLayer

object to a string.

Events

Name Arguments Description

tiledownloadcomplete None Occurs when all the tiles of

the tile layer have loaded.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key", center:new Microsoft.Maps.Location(48.03,-

Page 153: Bing Maps Ajax Controls Dk 70

122.4), zoom:12, mapTypeId: Microsoft.Maps.MapTypeId.road });

try

{

// Create the tile layer source

var tileSource = new Microsoft.Maps.TileSource({uriConstructor:

'http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png'});

// Construct the layer using the tile source

var tilelayer= new Microsoft.Maps.TileLayer({ mercator: tileSource,

opacity: .7 });

// Push the tile layer to the map

map.entities.push(tilelayer);

}

catch(err)

{

alert( 'Error Message:' + err.message);

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

Page 154: Bing Maps Ajax Controls Dk 70

See Also Working with Tile Layers

TileLayerOptions Object

Defines the options for a tile layer.

Properties

Name Type Description

animationDisplay AnimationVisibility The tile layer‟s visibility

during animation. You can

use this property to prevent

overlays from displaying

during animations, which can

impact performance. The

default value is auto.

mercator TileSource The tile source for the tile

layer.

opacity number The opacity of the tile layer,

defined by a number

between 0 (not visible) and

1.

visible boolean A boolean indicating whether

to show or hide the tile layer.

The default value is true. A

value of false indicates that

the tile layer is hidden,

although it is still an entity on

the map.

zIndex number The z-index of the tile layer,

with respect to other items

on the map.

Page 155: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var tilelayer = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key", center:new Microsoft.Maps.Location(48.03,-122.4), zoom:12,

mapTypeId: Microsoft.Maps.MapTypeId.road });

try

{

// Create the tile layer source

var tileSource = new Microsoft.Maps.TileSource({uriConstructor:

'http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png'});

// Construct the layer using the tile source

tilelayer= new Microsoft.Maps.TileLayer({ mercator: tileSource, opacity:

.7 });

// Push the tile layer to the map

Page 156: Bing Maps Ajax Controls Dk 70

map.entities.push(tilelayer);

}

catch(err)

{

alert( 'Error Message:' + err.message);

}

}

function SetOpacity()

{

var opacityVal = parseFloat(document.getElementById("txtOpacity").value);

if ((opacityVal > 1) || (opacityVal < 0))

{

alert("The opacity value must be between 0 and 1.");

}

else

{

tilelayer.setOptions({opacity: opacityVal});

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<input id="txtOpacity" type="text" value=".1" style="width:25px;"/>

Page 157: Bing Maps Ajax Controls Dk 70

<input type="button" value="Set Opacity" onclick="SetOpacity();"/>

</body>

</html>

See Also Working with Tile Layers

TileSource Class

Defines a tile source for a tile layer.

Constructor

Name Definition Description

TileSource TileSource(options:TileSourceOptions) Initializes a new instance

of the TileSource class.

Methods

Name Definition Return Type Description

getHeight getHeight() Number Returns the pixel

height of each tile in

the tile source.

getUriConstructor getUriConstructor() string Returns a string

that constructs tile

URLs used to

retrieve tiles for the

tile layer.

getWidth getWidth() number Returns the pixel

width of each tile in

the tile source.

toString toString() string Converts the

TileSource object to

a string.

Page 158: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key",

center:new Microsoft.Maps.Location(48.03,-122.4), zoom:12, mapTypeId:

Microsoft.Maps.MapTypeId.road });

try

{

// Create the tile layer source

var tileSource = new Microsoft.Maps.TileSource({uriConstructor:

'http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png'});

// Construct the layer using the tile source

var tilelayer= new Microsoft.Maps.TileLayer({ mercator: tileSource,

opacity: .7 });

// Push the tile layer to the map

map.entities.push(tilelayer);

Page 159: Bing Maps Ajax Controls Dk 70

}

catch(err)

{

alert( 'Error Message:' + err.message);

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

See Also Working with Tile Layers

TileSourceOptions Object

Defines options for a tile source.

Properties

Name Type Description

height number The pixel height of each tile in

the tile source. The default

value is 256.

The specified height needs to

be a multiplier of 2 of the

current projection‟s tile height

for the tiles to be shown. For

example, since Mercator tile

Page 160: Bing Maps Ajax Controls Dk 70

Name Type Description

source tiles are 256x256, this

projection supports tiles that

are 64x64, 128x128, 256x256,

512x512, or any combination of

these.

uriConstructor string The string that constructs the

URLs used to retrieve tiles from

the tile source. This property is

required.

The uriConstructor will replace

{subdomain} and {quadkey}.

width number The pixel width of each tile in

the tile source. The default

value is 256.

The specified width needs to be

a multiplier of 2 of the current

projection‟s tile width for the

tiles to be shown. For example,

since Mercator tile source tiles

are 256x256, this projection

supports tiles that are 64x64,

128x128, 256x256, 512x512, or

any combination of these.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

Page 161: Bing Maps Ajax Controls Dk 70

<script type="text/javascript">

function GetMap()

{

// Initialize the map

var map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key",

center:new Microsoft.Maps.Location(48.03,-122.4), zoom:12, mapTypeId:

Microsoft.Maps.MapTypeId.road });

try

{

// Create the tile layer source

var tileSource = new Microsoft.Maps.TileSource({uriConstructor:

'http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png'});

// Construct the layer using the tile source

var tilelayer= new Microsoft.Maps.TileLayer({ mercator: tileSource,

opacity: .7 });

// Push the tile layer to the map

map.entities.push(tilelayer);

}

catch(err)

{

alert( 'Error Message:' + err.message);

}

}

</script>

</head>

<body onload="GetMap();">

Page 162: Bing Maps Ajax Controls Dk 70

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

See Also Working with Tile Layers

ViewOptions Object

Contains options for the map view.

Properties

Name Type Description

animate boolean A boolean that specifies

whether to animate map

navigation. Note that this option

is associated with each

setView call and defaults to

true if not specified.

bounds LocationRect The bounding rectangle of the

map view. If both are specified,

bounds takes precedence over

center.

center Location The location of the center of

the map view. If both are

specified, bounds takes

precedence over center.

centerOffset Point The amount the center is

shifted. This property is ignored

if center is not specified.

heading number The directional heading of the

map. The heading is

represented in geometric

degrees with 0 or 360 = North,

90 = East, 180 = South, and

Page 163: Bing Maps Ajax Controls Dk 70

Name Type Description

270 = West.

labelOverlay LabelOverlay A constant indicating how map

labels are displayed.

mapTypeId string The map type of the view. Valid

map types are found in the

MapTypeId Enumeration topic.

padding number The amount of padding to be

added to each side of the

bounds of the map view.

zoom number The zoom level of the map

view.

For information about map

scale and resolution with

respect to zoom level, see

Understanding Scale and

Resolution.

Remarks To 'lock' the map in a certain position, disable mouse and keyboard events during the application

session. The following code disables mouse events.

// Attach an event handler for a mousemove event.

Microsoft.Maps.Events.addHandler(map, "mousemove", cancelEvent);

// When the mouse is used, the cancelEvent function will

// get called. Setting the handled property to true will

// disable the mousemove event, which disables panning.

function cancelEvent(e)

{

e.handled = true;

}

Page 164: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Set the initial map and view settings

var initialViewBounds = Microsoft.Maps.LocationRect.fromCorners(new

Microsoft.Maps.Location(43,-123), new Microsoft.Maps.Location(33,-113));

var options = {credentials:"Bing Maps Key", width: 500, height: 500, bounds:

initialViewBounds, mapTypeId:Microsoft.Maps.MapTypeId.aerial, animate: false};

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),options);

}

function SetZoom()

{

// Retrieve the zoom level set by the user - converting it to a number.

var zoomLevel = parseInt(document.getElementById("txtZoom").value);

Page 165: Bing Maps Ajax Controls Dk 70

// Get the existing options.

var options = map.getOptions();

// Set the zoom level of the map

options.zoom = zoomLevel;

map.setView(options);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative;"></div>

<input id="txtZoom" type="text" value="1"/>

<input type="button" value="Set Zoom" onclick="SetZoom();"/>

</body>

</html>

Microsoft.Maps.Directions API Reference

This section contains reference documentation for the Microsoft.Maps.Directions API, which

contains types that allow you to calculate route directions and display them on your Bing Maps

AJAX Control 7.0 map. Use the calculateDirections method of the DirectionsManager Class to

calculate a route. Sample code can be found at http://www.bingmapsportal.com/isdk/ajaxv7.

Before you can access the types found in the Microsoft.Maps.Directions API, you must

first load this module using the loadModule method. Information about loading modules

is in the Module Loading Methods topic.

In This Section BusinessDetails Class

BusinessDisambiguationSuggestion Class

DirectionsErrorEventArgs Object

DirectionsEventArgs Object

Page 166: Bing Maps Ajax Controls Dk 70

DirectionsManager Class

DirectionsRenderOptions Object

DirectionsRequestOptions Object

DirectionsStep Class

DirectionsStepEventArgs Object

DirectionsStepRenderEventArgs Object

DirectionsStepWarning Class

Disambiguation Class

DistanceUnit Enumeration

IconType Enumeration

LocationDisambiguationSuggestion Class

Maneuver Enumeration

ResetDirectionsOptions Object

Route Class

RouteAvoidance Enumeration

RouteLeg Class

RouteMode Enumeration

RouteOptimization Enumeration

RoutePath Class

RouteResponseCode Enumeration

RouteSelectorEventArgs Object

RouteSelectorRenderEventArgs Object

RouteSubLeg Class

RouteSummary Class

RouteSummaryRenderEventArgs Object

StepWarningStyle Enumeration

TimeType Enumeration

TransitLine Class

TransitOptions Object

Waypoint Class

WaypointEventArgs Object

WaypointOptions Object

WaypointRenderEventArgs Object

BusinessDetails Class

Contains business details for a waypoint.

Page 167: Bing Maps Ajax Controls Dk 70

Properties

Name Type Description

businessName string The business name of the

waypoint.

entityId string The Bing Maps entity ID of the

business.

phoneNumber string The phone number of the

business.

website string The URL of the business‟

website.

See Also

BusinessDisambiguationSuggestion Class

Contains a possible business result returned from geocoding a specified waypoint address or

location.

Properties

Name Type Description

address string The address of the business

result.

distance number The distance of the business

result from the originally

specified waypoint address or

location.

entityId string The Yellow Pages ID for the

business.

index number The index of this suggestion

within the business suggestion

array.

isApproximate boolean A boolean indicating whether

Page 168: Bing Maps Ajax Controls Dk 70

Name Type Description

the result location is

approximate.

location Location The location of the business

suggestion.

name string The name of the business.

phoneNumber string The phone number of the

business suggestion.

photoUrl string The URL of a photo of the

business suggestion.

rooftopLocation Location The rooftop location of the

business suggestion.

website string The URL of the business

result‟s website.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

Page 169: Bing Maps Ajax Controls Dk 70

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({ address:

"Seattle, WA" });

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address:

"Microsoft" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

Page 170: Bing Maps Ajax Controls Dk 70

}

function displayError(e)

{

// Display the error message

alert(e.message);

// If the error is a disambiguation error, display the results.

if (e.responseCode ==

Microsoft.Maps.Directions.RouteResponseCode.waypointDisambiguation)

{

DisplayDisambiguation();

}

}

function DisplayDisambiguation()

{

var results = "";

var waypoints = directionsManager.getAllWaypoints();

var i = 0;

for (i=0; i<waypoints.length; i++)

{

var disambigResult = waypoints[i].getDisambiguationResult();

if (disambigResult != null)

{

results = results + "Address matches for " + waypoints[i].getAddress()

+ ":\n";

if(disambigResult.businessSuggestions.length != 0)

{

Page 171: Bing Maps Ajax Controls Dk 70

var j = 0;

for (j=0; j<disambigResult.businessSuggestions.length; j++)

{

results = results + disambigResult.businessSuggestions[j].name +

", " + disambigResult.businessSuggestions[j].address + "\n";

}

}

else if (disambigResult.locationSuggestions.length != 0)

{

var k = 0;

for (k=0; k<disambigResult.locationSuggestions.length; k++)

{

results = results +

disambigResult.locationSuggestions[k].suggestion + "\n";

}

}

else

{

results = results + disambigResult.headerText + "\n";

}

}

}

alert(results);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

Page 172: Bing Maps Ajax Controls Dk 70

See Also Disambiguation Class

DirectionsErrorEventArgs Object

Contains arguments for directions error events.

Properties

Name Type Description

responseCode RouteResponseCode The code which identifies

the error that occurred.

message string The error message.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

Page 173: Bing Maps Ajax Controls Dk 70

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Paris,

France"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions render options - in this case, specify the div where the

itinerary is displayed.

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated and when an error

occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError );

Page 174: Bing Maps Ajax Controls Dk 70

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayMessage(e)

{

alert("Route calculation complete!");

}

function displayError(e)

{

alert( e.message );

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsEventArgs Object

Contains the arguments for directions events.

Properties

Page 175: Bing Maps Ajax Controls Dk 70

Name Type Description

routeSummary RouteSummary[] The route summary (or

summaries) of the route(s)

defined in the route property.

route Route[] The calculated route (or

routes, if the route mode is

transit).

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

Page 176: Bing Maps Ajax Controls Dk 70

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options - in this case, calculate a transit route.

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit });

// Set directions render options - in this case, specify the div

// where the itinerary is displayed.

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayRouteNumber);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayRouteNumber(e)

Page 177: Bing Maps Ajax Controls Dk 70

{

alert("Number of transit routes available: " + e.route.length);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsManager Class

Contains methods for calculating directions and displaying a route on a map.

Constructor

Name Definition Description

DirectionsManager DirectionsManager(map:Map) Initializes a new instance of

the DirectionsManager

class.

Methods

Name Definition Return Value Description

addWaypoint addWaypoint(waypoint:Waypoint,

index:number)

None Adds a

waypoint to the

route at the

given index, if

specified. If an

index is not

specified the

Page 178: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

waypoint is

added as the

last waypoint in

the route.

To recalculate

the route, use

calculateDirec

tions.

The maximum

number of

walking or

driving

waypoints is

25. The

maximum

number of

transit

waypoints is 2.

Up to 10 via

points are

allowed

between two

stop waypoints.

calculateDirecti

ons

calculateDirections() None Calculates

directions

based on

request and

render options

set

(setRequestO

ptions,

setRenderOpti

ons) and the

waypoints

added

(addWaypoint)

. The

directionsUpd

ated event fires

when the

Page 179: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

calculation is

complete and

the route is

displayed on

the map.

You must call

this method

after making

any changes to

the route

options or

waypoints.

clearDisplay clearDisplay() None Clears the

directions

displayed and

removes the

route line from

the map. This

method does

not remove

waypoints from

the route and

retains all

calculated

direction

information and

option settings.

To clear the

calculated

directions and

options, use

resetDirection

s.

dispose dispose() None Deletes the

DirectionsMan

ager object and

releases any

associated

resources.

Page 180: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

getAllWaypoint

s

getAllWaypoints() Waypoint[] Returns the

waypoints for

the route.

getMap getMap() Map Returns the

map object

associated with

the directions

manager.

getNearbyMajor

Roads

getNearbyMajorRoads(location:Locatio

n, callback:function,

errorCallback:function,

userData:object)

None Searches

around the

specified

location for

nearby major

roads and

returns them as

an object to the

callback

function.

getRenderOptio

ns

getRenderOptions() DirectionsRender

Options

Returns the

route render

options.

getRequestOpti

ons

getRequestOptions() DirectionsRequest

Options

Returns the

directions

request

options.

getRouteResult getRouteResult() Route[] Returns the

current

calculated

route(s). If the

route was not

successfully

calculated, null

is returned.

removeWaypoi

nt

removeWaypoint(waypoint:Waypoint) or

removeWaypoints(index:number)

None Removes the

given waypoint

or the waypoint

identified by the

given index

Page 181: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

from the route.

Use

calculateDirec

tions to update

the route once

a waypoint has

been removed.

resetDirections resetDirections(options:ResetDirectio

nsOptions)

None If no options

object is

supplied, clears

the directions

request and

render options

and removes

all waypoints.

reverseGeocod

e

reverseGeocode(location:Location,

callback:function,

errorCallback:function,

userData:object)

None Matches the

specified

location to an

address and

returns the

address to the

specified

callback

function.

setMapView setMapView() None Sets the map

view based on

the current

route index.

setRenderOptio

ns

setRenderOptions(options:DirectionsR

enderOptions)

None Sets the

specified

render options

for the route.

setRequestOpti

ons

setRequestOptions(options:Directions

RequestOptions)

None Sets the

specified route

calculation

options.

Page 182: Bing Maps Ajax Controls Dk 70

Events

Name Arguments Description

afterRouteSelectorRender RouteSelectorRenderEventArgs Occurs after the

route selector has

fully rendered.

afterStepRender DirectionsStepRenderEventArgs Occurs after each

step in the itinerary

has fully rendered.

afterSummaryRender RouteSummaryRenderEventArgs Occurs after the

route summary has

fully rendered.

afterWaypointRender WaypointRenderEventArgs Occurs after each

route waypoint has

fully rendered.

beforeRouteSelectorRender RouteSelectorRenderEventArgs Occurs just before

the route selector

renders.

beforeStepRender DirectionsStepRenderEventArgs Occurs just before

each step in the

itinerary renders.

beforeSummaryRender RouteSummaryRenderEventArgs Occurs just before

the route summary

renders.

beforeWaypointRender WaypointRenderEventArgs Occurs just before

each route waypoint

renders.

directionsError DirectionsErrorEventArgs Occurs when

calculating the

directions caused an

error.

directionsUpdated DirectionsEventArgs Occurs when the

directions calculation

was successful and

the itinerary and

route on the map

have been updated.

Page 183: Bing Maps Ajax Controls Dk 70

Name Arguments Description

dragDropCompleted None Occurs when the

drag of a waypoint or

route is completed.

itineraryStepClicked DirectionsStepEventArgs Occurs when a step

in the itinerary is

clicked.

mouseEnterRouteSelector RouteSelectorEventArgs Occurs when the

mouse cursor is over

the route selector.

mouseEnterStep DirectionsStepEventArgs Occurs when the

mouse cursor is over

a directions step.

mouseLeaveRouteSelector RouteSelectorEventArgs Occurs when the

mouse cursor leaves

the route selector.

mouseLeaveStep DirectionsStepEventArgs Occurs when the

mouse cursor leaves

a directions step.

routeSelectorClicked RouteSelectorEventArgs Occurs when the

route selector is

clicked.

waypointAdded WaypointEventArgs Occurs when a new

waypoint is added to

the route.

waypointRemoved WaypointEventArgs Occurs when a

waypoint is removed

from the route.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

Page 184: Bing Maps Ajax Controls Dk 70

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Portland,

OR"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

Page 185: Bing Maps Ajax Controls Dk 70

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsRenderOptions Object

Represents render options for a route.

Properties

Page 186: Bing Maps Ajax Controls Dk 70

Name Type Description

autoUpdateMapView boolean A boolean indicating

whether to automatically

set the map view to the

best map view of the

calculated route. The

default value is true.

displayDisclaimer boolean A boolean indicating

whether to display the

disclaimer about the

accuracy of the directions.

The default value is false.

displayManeuverIcons boolean A boolean indicating

whether to display the

icons for each direction

maneuver. The default

value is true.

displayPostItineraryItemHints boolean A boolean indicating

whether to display

direction hints that

describe when an

direction step was missed.

The default value is true.

displayPreItineraryItemHints boolean A boolean indicating

whether to display

direction hints that

describe what to look for

before you come to the

next direction step. The

default value is true.

displayRouteSelector boolean A boolean indicating

whether to display the

route selector control. The

default value is true.

displayStepWarnings boolean A boolean indicating

whether to display

direction warnings. The

default value is true.

Page 187: Bing Maps Ajax Controls Dk 70

Name Type Description

displayTrafficAvoidanceOption boolean A boolean indicating

whether to display the

control that allows the

user to choose to avoid

traffic. The default value is

true.

displayWalkingWarning boolean A boolean indicating

whether to display a

warning about walking

directions. The default

value is true.

drivingPolylineOptions PolylineOptions The options that define

how to draw the route line

on the map, if the

RouteMode is driving.

itineraryContainer DOMElement The DOM element inside

which the directions

itinerary will be rendered.

lastWaypointIcon string The URL of the icon to

use for the end waypoint.

middleWaypointIcon string The URL of the icon to

use for intermediate

waypoints.

stepPushpinOptions PushpinOptions The options that define

the pushpin to use for

each direction step.

transitPolylineOptions PolylineOptions The options that define

how to draw the route line

on the map, if the

RouteMode is transit.

viapointPushpinsOptions PushpinOptions The options that define

the pushpin to use for

each via point of the

route, which are any

waypoints other than the

start and end waypoints.

Page 188: Bing Maps Ajax Controls Dk 70

Name Type Description

walkingPolylineOptions PolylineOptions The options that define

how to draw the route line

on the map, if the

RouteMode is walking.

waypointPushpinOptions PushpinOptions The options that define

the pushpin to use for the

route waypoint.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

Page 189: Bing Maps Ajax Controls Dk 70

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: "Green

Lake" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set request options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.walking });

// Set the render options

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv'), displayWalkingWarning: false,

walkingPolylineOptions:{strokeColor: new Microsoft.Maps.Color(200, 0, 255, 0)} });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

Page 190: Bing Maps Ajax Controls Dk 70

}

function displayError(e)

{

// Display the error message

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsRequestOptions Object

Contains options for the directions to calculate.

Properties

Name Type Description

avoidTraffic boolean A boolean indicating whether to

return traffic info when calculating

the route. The default value is

false.

distanceUnit DistanceUnit The unit to use when displaying

direction distances. The default

value is based on the specified

Page 191: Bing Maps Ajax Controls Dk 70

Name Type Description

culture.

maxRoutes number The number of routes to calculate.

If the routeMode is driving or

walking, only 1 route is supported.

If the routeMode is transit, up to 6

routes can be calculated and the

default is 3.

routeAvoidance RouteAvoidance[] The features to avoid when

calculating the route. The default

value is none.

routeDraggable boolean A boolean indicating whether the

route line on the map can be

dragged with the mouse cursor.

The default value is true.

When a route is dragged, a via

point is added to the route.

To change the drag behavior of a

waypoint, set the draggable

property of the

waypointPushpinOptions (of the

DirectionsRenderOptions).

routeIndex number If multiple routes are returned, the

index of the route and directions to

display. This property only applies

to routes where the routeMode is

transit, and in this case up to 6

routes are supported.

routeMode RouteMode The type of directions to calculate.

The default value is driving.

When the culture is ja-jp, only the

transit route mode is supported,

which is the default for that

market.

routeOptimization RouteOptimization The optimization setting for the

route calculation. The default

value is shortestTime.

transitOptions TransitOptions The extra options for calculating a

Page 192: Bing Maps Ajax Controls Dk 70

Name Type Description

route if the routeMode is transit.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

Page 193: Bing Maps Ajax Controls Dk 70

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: "Redmond,

WA" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set request options

directionsManager.setRequestOptions({ avoidTraffic: true, routeOptimization:

Microsoft.Maps.Directions.RouteOptimization.shortestDistance });

// Set the render options

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

// Display the error message

alert(e.message);

Page 194: Bing Maps Ajax Controls Dk 70

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsStep Class

Represents one direction in a set of route directions.

Properties

Name Type Description

childItineraryItems DirectionsStep[] The child direction items for this

directions step.

coordinate Location The location of the start of the

direction.

distance string The total distance of the step in

the unit specified in the

distanceUnit property of the

DirectionsRequestOptions.

durationInSeconds number The total time, in seconds, of the

direction step.

formattedText string The HTML formatted route

instruction associated with the

step.

iconType IconType The type of the icon associated

with this step.

isImageRoadShield boolean A boolean indicating whether

the maneuver image is a road

Page 195: Bing Maps Ajax Controls Dk 70

Name Type Description

shield image.

maneuver Maneuver The maneuver type associated

with this step.

maneuverImageName string The name of the maneuver

image.

monetaryCost number The cost of the step.

postIntersectionHints string[] An array of strings, where each

string is a hint to help determine

when to move to the next

direction step. Not all direction

steps have hints.

preIntersectionHints string[] An array of strings, where each

string is a hint to help determine

when you have arrived at this

direction step. Not all direction

steps have hints.

startStopName string The name of the transit stop

where this step originates.

transitLine TransitLine The transit line associated with

this step.

transitStepIcon string The URL of the image to use for

transit direction steps.

transitStopId string The ID of the transit stop.

transitTerminus string The name of the transit line end.

warnings DirectionsStepWarning[] An array of strings, where each

string is a route warning

associated with this step.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

Page 196: Bing Maps Ajax Controls Dk 70

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

Page 197: Bing Maps Ajax Controls Dk 70

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit});

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'itineraryStepClicked',

displayStepMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

function displayMessage(e)

{

alert("Click a step in the itinerary to display extra transit information.");

}

Page 198: Bing Maps Ajax Controls Dk 70

function displayStepMessage(e)

{

if (e.step.iconType == Microsoft.Maps.Directions.IconType.bus )

{

alert("The name of the transit agency for this step is: " +

e.step.transitLine.agencyName + ". For information about this transit agency and transit

line, go to " + e.step.transitLine.agencyUrl + ".");

}

else

{

alert("The step that was clicked is not a transit step.");

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsStepEventArgs Object

Contains arguments for directions step events.

Properties

Page 199: Bing Maps Ajax Controls Dk 70

Name Type Description

handled boolean A boolean indicating whether

the event is handled. Set this

property to true to override

the default behavior.

location Location The location along the route

where the direction step

occurs.

routeIndex number A number indicating the route

(if multiple routes were

returned) to which the

directions step belongs.

routeLegIndex number A number indicating the route

leg to which the directions

step belongs.

step DirectionsStep The directions step.

stepIndex number A number indicating the index

of the directions step within

the route leg array.

stepNumber number A number indicating the

directions step number within

the route.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

Page 200: Bing Maps Ajax Controls Dk 70

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit});

Page 201: Bing Maps Ajax Controls Dk 70

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'itineraryStepClicked',

displayStepMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

function displayMessage(e)

{

alert("Click a step in the itinerary to display extra step information.");

}

function displayStepMessage(e)

{

alert("The directions step that was clicked is step number " + (e.stepIndex +

1) + ", and the location of this step is: " + e.location);

}

</script>

</head>

Page 202: Bing Maps Ajax Controls Dk 70

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsStepRenderEventArgs Object

Contains arguments for directions step render events.

Properties

Name Type Description

containerElement object The DOM element which

contains the directions step.

You can use this property to

add custom content.

handled boolean A boolean indicating whether

the event is handled. This

property is only available for the

beforeStepRender event. Set

this property to true to override

the default behavior.

lastStep boolean A boolean indicating whether

the step is the last directions

step.

routeIndex number A number indicating the index

of the route to which this step

belongs.

routeLegIndex number A number indicating the index

of the route leg to which this

step belongs.

step DirectionsStep The directions step.

stepIndex number The index of this directions step

within the route leg step array.

Page 203: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

Page 204: Bing Maps Ajax Controls Dk 70

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit});

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'afterStepRender',

displayStepMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

function displayStepMessage(e)

{

var message = "A directions step has rendered.";

Page 205: Bing Maps Ajax Controls Dk 70

if (e.lastStep) { message = message + " This is the last itinerary step.";

}

alert(message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

DirectionsStepWarning Class

Represents a route direction warning, such as a traffic congestion warning.

Properties

Name Type Description

style StepWarningStyle The type of the route warning.

text string The warning text.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

Page 206: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

Page 207: Bing Maps Ajax Controls Dk 70

// Set directions options

directionsManager.setRequestOptions({ avoidTraffic: true });

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayMessage(e)

{

// Variable for counting warnings

var warningCount = 0;

for( j=0; j< e.route[0].routeLegs.length; j++)

{

var i = 0;

for (i=0; i < e.route[0].routeLegs[j].itineraryItems.length; i++)

{

if (e.route[0].routeLegs[j].itineraryItems[i].warnings.length != 0 )

{

Page 208: Bing Maps Ajax Controls Dk 70

warningCount = warningCount +

e.route[0].routeLegs[j].itineraryItems[i].warnings.length;

}

}

}

alert("There are " + warningCount + " warning(s) in this route.");

}

function displayError(e)

{

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

Disambiguation Class

Contains disambiguation results for a waypoint geocoding request.

Properties

Page 209: Bing Maps Ajax Controls Dk 70

Name Type Description

businessSuggestions BusinessDiambiguationSuggestion[] The possible business

result matches for the

originally specified

waypoint address or

location.

hasMoreSuggestions boolean A boolean indicating

whether there are more

result suggestions

available.

headerText string The disambiguation

header text.

locationSuggestions LocationDiambiguationSuggestion[] The possible location

result matches for the

originally specified

waypoint address or

location.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

Page 210: Bing Maps Ajax Controls Dk 70

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({ address:

"Seattle, WA" });

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: "148th

Way Bellevue" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

Page 211: Bing Maps Ajax Controls Dk 70

directionsManager.calculateDirections();

}

function displayError(e)

{

// Display the error message

alert(e.message);

// If the error is a disambiguation error, display the results.

if (e.responseCode ==

Microsoft.Maps.Directions.RouteResponseCode.waypointDisambiguation)

{

DisplayDisambiguation();

}

}

function DisplayDisambiguation()

{

var results = "";

var waypoints = directionsManager.getAllWaypoints();

var i = 0;

for (i=0; i<waypoints.length; i++)

{

var disambigResult = waypoints[i].getDisambiguationResult();

if (disambigResult != null)

{

results = results + "Address matches for " + waypoints[i].getAddress()

+ ":\n";

if(disambigResult.businessSuggestions.length != 0)

Page 212: Bing Maps Ajax Controls Dk 70

{

var j = 0;

for (j=0; j<disambigResult.businessSuggestions.length; j++)

{

results = results + disambigResult.businessSuggestions[j].name +

", " + disambigResult.businessSuggestions[j].address + "\n";

}

}

else if (disambigResult.locationSuggestions.length != 0)

{

var k = 0;

for (k=0; k<disambigResult.locationSuggestions.length; k++)

{

results = results +

disambigResult.locationSuggestions[k].suggestion + "\n";

}

}

else

{

results = results + disambigResult.headerText + "\n";

}

}

}

alert(results);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

Page 213: Bing Maps Ajax Controls Dk 70

</html>

See Also Waypoint Class (AJAX)

DistanceUnit Enumeration (AJAX)

Defines the distance unit to use when generating routes and corresponding itineraries.

Constants

Code Name Description

0 kilometers Kilometers are used to measure

route distances.

1 miles Miles are used to measure

route distances.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

Page 214: Bing Maps Ajax Controls Dk 70

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: "Redmond,

WA" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set request options

directionsManager.setRequestOptions({ distanceUnit:

Microsoft.Maps.Directions.DistanceUnit.kilometers, routeOptimization:

Microsoft.Maps.Directions.RouteOptimization.shortestDistance });

// Set the render options

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

Page 215: Bing Maps Ajax Controls Dk 70

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

// Display the error message

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

IconType Enumeration

Contains route icon types.

Constants

Page 216: Bing Maps Ajax Controls Dk 70

Type Code Name Description

0 none There is no route icon.

1 other The icon is some other type of

icon.

2 auto The icon is a car icon.

3 ferry The icon is a ferry icon.

4 walk The icon is a walking icon.

5 bus The icon is a bus, or transit, icon

6 train The icon is a train icon.

7 airline The icon is an airline icon.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Page 217: Bing Maps Ajax Controls Dk 70

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit});

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'itineraryStepClicked',

displayStepMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

Page 218: Bing Maps Ajax Controls Dk 70

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

function displayMessage(e)

{

alert("Click a step in the itinerary to display extra transit information.");

}

function displayStepMessage(e)

{

if (e.step.iconType == Microsoft.Maps.Directions.IconType.bus )

{

alert("The name of the transit agency for this step is: " +

e.step.transitLine.agencyName + ". For information about this transit agency and transit

line, go to " + e.step.transitLine.agencyUrl + ".");

}

else

{

alert("The step that was clicked is not a transit step.");

}

}

Page 219: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

LocationDisambiguationSuggestion Class

Contains a possible result returned from geocoding a specified waypoint address or location.

Properties

Name Type Description

formattedSuggestion string The HTML formatted address

suggestion.

location Location The location of the

suggestion.

rooftopLocation Location The rooftop location of the

suggestion.

suggestion string The address suggestion.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

Page 220: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({ address:

"Seattle, WA" });

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: "148th

Way Bellevue" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

Page 221: Bing Maps Ajax Controls Dk 70

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

// Display the error message

alert(e.message);

// If the error is a disambiguation error, display the results.

if (e.responseCode ==

Microsoft.Maps.Directions.RouteResponseCode.waypointDisambiguation)

{

DisplayDisambiguation();

}

}

function DisplayDisambiguation()

{

var results = "";

var waypoints = directionsManager.getAllWaypoints();

var i = 0;

for (i=0; i<waypoints.length; i++)

Page 222: Bing Maps Ajax Controls Dk 70

{

var disambigResult = waypoints[i].getDisambiguationResult();

if (disambigResult != null)

{

results = results + "Address matches for " + waypoints[i].getAddress()

+ ":\n";

if(disambigResult.businessSuggestions.length != 0)

{

var j = 0;

for (j=0; j<disambigResult.businessSuggestions.length; j++)

{

results = results + disambigResult.businessSuggestions[j].name +

", " + disambigResult.businessSuggestions[j].address + "\n";

}

}

else if (disambigResult.locationSuggestions.length != 0)

{

var k = 0;

for (k=0; k<disambigResult.locationSuggestions.length; k++)

{

results = results +

disambigResult.locationSuggestions[k].suggestion + "\n";

}

}

else

{

results = results + disambigResult.headerText + "\n";

}

}

}

alert(results);

Page 223: Bing Maps Ajax Controls Dk 70

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

See Also Disambiguation Class

Maneuver Enumeration

Contains route maneuver types.

Constants

Type Code Name Description

0 none The step is not a maneuver.

1 unknown The maneuver is unknown.

2 departStart Depart from the start

waypoint.

3 departIntermediateStop Depart from an intermediate

stop point going in a

different direction and on a

different road than which

you arrived.

4 departIntermediateStopReturning Depart from an intermediate

stop point going back in the

same direction and on the

same road on which you

Page 224: Bing Maps Ajax Controls Dk 70

Type Code Name Description

arrived.

5 arriveFinish Arrive at the end waypoint.

6 arriveIntermediateStop Arrive at an intermediate

stop point.

7 turnLeft Turn left.

8 turnRight Turn right.

9 turnBack Turn back sharply.

10 uTurn Make a u-turn to go in the

opposite direction.

11 turnToStayLeft Turn left to stay on the

same road.

12 turnToStayRight Turn right to stay on the

same road.

13 bearLeft Bear left.

14 bearRight Bear right.

15 keepToStayLeft Keep left to stay on the

same road.

16 keepToStayRight Keep right to stay on the

same road.

17 keepToStayStraight Keep straight to stay on the

same road.

18 keepLeft Keep left onto a different

road.

19 keepRight Keep right onto a different

road.

20 keepStraight Keep straight onto a

different road.

21 take Take the road. This

instruction is used when

you are entering or exiting a

ferry.

22 takeRampLeft Take the ramp to the left.

Page 225: Bing Maps Ajax Controls Dk 70

Type Code Name Description

23 takeRampRight Take the ramp to the right.

24 takeRampStraight Stay straight to take the

ramp.

25 keepOnRampLeft Keep left and continue onto

ramp.

26 keepOnRampRight Keep right and continue

onto ramp.

27 keepOnRampStraight Keep straight and continue

onto ramp.

28 merge Merge onto highway.

29 continueRoute Continue on the current

road.

30 roadNameChange The road name changed.

31 enterRoundabout Enter a roundabout.

32 exitRoundabout Exit a roundabout.

33 turnRightThenTurnRight Turn right and then turn

right.

34 turnRightThenTurnLeft Turn right and then turn left.

35 turnRightThenBearRight Turn right and then bear

right.

36 turnRightThenBearLeft Turn right and then bear

left.

37 turnLeftThenTurnLeft Turn left and then turn left.

38 turnLeftThenTurnRight Turn left and then turn right.

39 turnLeftThenBearLeft Turn left and then bear left.

40 turnLeftThenBearRight Turn left and then bear

right.

41 bearRightThenTurnRight Bear right and then turn

right.

42 bearRightThenTurnLeft Bear right and then turn left.

43 bearRightThenBearRight Bear right and then bear

Page 226: Bing Maps Ajax Controls Dk 70

Type Code Name Description

right.

44 bearRightThenBearLeft Bear right and then bear

left.

45 bearLeftThenTurnLeft Bear left and then turn left.

46 bearLeftThenTurnRight Bear left and then turn right.

47 bearLeftThenBearRight Bear left and then bear

right.

48 bearLeftThenBearLeft Bear left and then bear left.

49 rampThenHighwayRight Take left ramp onto

highway. This is part of a

combined instruction.

50 rampThenHighwayLeft Take right ramp onto

highway. This is part of a

combined instruction.

51 rampToHighwayStraight Stay straight to take the

ramp onto the highway.

This is part of a combined

instruction.

52 enterThenExitRoundabout Enter and exit a

roundabout.

53 bearThenMerge Bear instruction and then a

merge instruction.

54 turnThenMerge Turn instruction and then a

merge instruction.

55 bearThenKeep Bear instruction and then a

keep instruction.

56 transfer Transfer between public

transit lines at a transit stop.

57 wait Wait at a transit stop.

58 takeTransit Take transit.

59 walk The maneuver is a walking

instruction.

60 transitDepart Get on a public transit line

Page 227: Bing Maps Ajax Controls Dk 70

Type Code Name Description

at a transit stop.

61 transitArrive Get off a public transit line

at a transit stop.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

Page 228: Bing Maps Ajax Controls Dk 70

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit});

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'itineraryStepClicked',

displayStepMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

Page 229: Bing Maps Ajax Controls Dk 70

function displayError(e)

{

alert(e.message);

}

function displayMessage(e)

{

alert("Click a transit step in the itinerary to display extra maneuver

information.");

}

function displayStepMessage(e)

{

if (e.step.maneuver == Microsoft.Maps.Directions.Maneuver.transfer )

{

alert("This step is transit transfer instruction.");

}

else if (e.step.maneuver == Microsoft.Maps.Directions.Maneuver.takeTransit )

{

alert("This step is a transit instruction.");

}

else if (e.step.maneuver == Microsoft.Maps.Directions.Maneuver.transitDepart

)

{

alert("This step is a transit departure instruction.");

}

else if (e.step.maneuver == Microsoft.Maps.Directions.Maneuver.transitArrive

)

{

alert("This step is a transit arrival instruction.");

}

Page 230: Bing Maps Ajax Controls Dk 70

else

{

alert("This step is not a transit instruction.");

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

ResetDirectionsOptions Object

Contains options for the resetDirections method of the DirectionsManager Class.

Properties

Name Type Description

removeAllWaypoints boolean A boolean indicating whether

to remove all of the

waypoints of the route. The

default value is false.

resetRenderOptions boolean A boolean indicating whether

to reset all of the render

options set for the route. The

default value is false.

resetRequestOptions boolean A boolean indicating whether

Page 231: Bing Maps Ajax Controls Dk 70

Name Type Description

to reset all of the request

options set for the route. The

default value is false.

Route Class (AJAX)

Represents a route.

Properties

Name Type Description

routeLegs RouteLeg[] The legs of the route. Each

route leg represents the route

between two waypoints.

RouteAvoidance Enumeration

Defines features to avoid when calculating the route.

Constants

Code Name Description

0 none Calculate the best route

using any travel option

available.

1 minimizeLimitedAccessHighway Reduce the use of limited

access highways when

calculating the route.

2 minimizeToll Reduce the use of roads

with tolls when calculating

the route.

4 avoidLimitedAccessHighway Avoid using limited access

Page 232: Bing Maps Ajax Controls Dk 70

Code Name Description

highways when calculating

the route.

8 avoidToll Avoid using roads with tolls

when calculating the route.

16 avoidExpressTrain Avoid using express trains

when calculating the route.

This option only affects

routes with a transit

RouteMode that have the

culture set to ja-jp.

32 avoidAirline Avoid using airlines when

calculating the route. This

option only affects routes

with a transit RouteMode

that have the culture set to

ja-jp.

64 avoidBulletTrain Avoid using bullet trains

when calculating the route.

This option only affects

routes with a transit

RouteMode that have the

culture set to ja-jp.

RouteLeg Class (AJAX)

Represents a leg of a route. A route leg is the part of the route between two stop waypoints.

Properties

Name Type Description

endTime DateTime The end time of the route leg.

This property only applies when

the routeMode of the

DirectionsRequestOptions is set

to transit.

Page 233: Bing Maps Ajax Controls Dk 70

Name Type Description

endWaypointLocation Location The location of the last waypoint

of this leg.

itineraryItems DirectionsStep[] The directions steps associated

with this route leg.

originalRouteIndex number The index of the route to which

this route leg belongs.

startTime DateTime The start time of the route leg.

This property only applies when

the routeMode of the

DirectionsRequestOptions is set

to transit.

startWaypointLocation Location The location of the first waypoint

of this route leg.

subLegs RouteSubLeg[] The sub legs of this route leg. A

sub leg of a route is the part of

the route between a stop point

and a via point or between two

via points.

summary RouteSummary The summary which describes

this route leg.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

Page 234: Bing Maps Ajax Controls Dk 70

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage);

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

Page 235: Bing Maps Ajax Controls Dk 70

directionsManager.calculateDirections();

}

function displayMessage(e)

{

alert("The calculated route has " +

e.route[0].routeLegs[0].itineraryItems.length + " direction steps.");

}

function displayError(e)

{

alert("An error has occurred calculating the directions.");

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

</body>

</html>

RouteMode Enumeration

Defines the type of route to calculate.

Constants

Name Description

driving Driving directions are calculated.

transit Transit directions are calculated.

Page 236: Bing Maps Ajax Controls Dk 70

Name Description

walking Walking directions are calculated.

RouteOptimization Enumeration (AJAX)

Defines optimization options for calculating directions.

Constants

Code Name Description

0 shortestTime Calculate a route the shortest

time.

1 shortestDistance Calculate a route with the

shortest distance.

3 minimizeMoney Minimize the cost when

calculating directions. This

option only affects routes with

a transit RouteMode that

have the culture set to ja-jp.

4 minimizeTransfers Minimize transit transfers

when calculating directions.

This option only affects routes

with a transit RouteMode that

have the culture set to ja-jp.

5 minimizeWalking Minimize the amount of

walking when calculating

directions. This option only

affects routes with a transit

RouteMode that have the

culture set to ja-jp.

RoutePath Class (AJAX)

Represents the route line shape on the map.

Page 237: Bing Maps Ajax Controls Dk 70

Use the setRenderOptions method of the DirectionsManager Class to set

DirectionsRenderOptions to customize the look of the route line on the map.

Properties

Name Type Description

decodedLatitudes double[] An array of latitudes, where

each latitude is the latitude for

one of the locations that

define the route line.

decodedLongitudes double[] An array of longitudes, where

each is the longitude value for

one of the locations that

define the route line.

decodedRegions Object[] An array of regions that

define, depending on the

zoom level, how the route line

should be rendered.

RouteResponseCode Enumeration

Contains response codes for a route calculation request.

Constants

Response Code Name Description

0 success The route was successfully

calculated.

1 unknownError An unknown error has

occurred.

2 cannotFindNearbyRoad A nearby road cannot be

found for one or more of the

route waypoints.

3 tooFar The distance between two

Page 238: Bing Maps Ajax Controls Dk 70

Response Code Name Description

route waypoints, or the total

length of the route exceeds

the limit of the route mode.

Modify the waypoint

locations so that they are

closer together.

4 noSolution A route cannot be calculated

for the specified waypoints.

For example, this code is

returned when a route

between “Seattle, WA” and

“Honolulu, HI” is requested.

5 dataSourceNotFound There is no route data for the

specified waypoints.

7 noAvailableTransitTrip There are no transit options

available for the specified

time.

8 transitStopsTooClose The transit stops are so

close that walking is always

a better option.

9 walkingBestAlternative The transit stops are so

close that walking is a better

option.

10 outOfTransitBounds There is no transit data

available for the route or for

one or more of the specified

waypoints, or the waypoints

are in different transit areas

that do not overlap.

11 timeout The directions calculation

request has timed out.

12 waypointDisambiguation One or more waypoints need

to be disambiguated.

13 hasEmptyWaypoint One or more waypoints do

not have an address or

location specified.

Page 239: Bing Maps Ajax Controls Dk 70

Response Code Name Description

14 exceedMaxWaypointLimit The maximum number of

waypoints, which is 25, has

been exceeded.

15 atleastTwoWaypointRequired At least two waypoints are

required to calculate a route.

16 firstOrLastStoppointIsVia The first or last waypoint is a

via point, which is not

allowed.

17 searchServiceFailed The search service failed to

return results.

18 invalidCredentials The credentials passed to

the Directions module are

invalid.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

Page 240: Bing Maps Ajax Controls Dk 70

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var waypoint1 = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var waypoint2 = new Microsoft.Maps.Directions.Waypoint({ address: "Redmond,

WA"});

var waypoint3 = new Microsoft.Maps.Directions.Waypoint({ address: "Bellevue,

WA", isViapoint: true } );

directionsManager.addWaypoint(waypoint1);

directionsManager.addWaypoint(waypoint2);

directionsManager.addWaypoint(waypoint3);

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

Page 241: Bing Maps Ajax Controls Dk 70

directionsManager.calculateDirections();

}

function displayError(e)

{

// Display the error message

alert(e.message);

// If the error is a viapoint error, display an error

if (e.responseCode ==

Microsoft.Maps.Directions.RouteResponseCode.firstOrLastStoppointIsVia )

{

alert("Please remove the 'isViapoint' option from your first or last stop

point.");

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

RouteSelectorEventArgs Object

Contains arguments for route selector events.

Properties

Page 242: Bing Maps Ajax Controls Dk 70

Name Type Description

handled boolean A boolean indicating whether

the event is handled. Set this

property to true to override the

default behavior.

routeIndex number A number indicating the index

of the route that was selected.

RouteSelectorRenderEventArgs Object

Contains arguments for route selector render events.

Properties

Name Type Description

containerElement object The DOM element which contains

the route selector. You can use this

property to add custom content.

handled boolean A boolean indicating whether the

event is handled. This property is

only available for the

beforeRouteSelectorRender event.

Set this property to true to override

the default behavior.

routeIndex number A number indicating the index of the

selected route.

routeLeg RouteLeg The route leg of the selected route.

RouteSubLeg Class

Represents a route sub leg. A route sub leg is the part of the route between a stop point and a via

point or between two via points. One or more sub legs make up a route leg.

Page 243: Bing Maps Ajax Controls Dk 70

Properties

Name Type Description

actualEnd Location The location of the last

waypoint of the sub leg.

actualStart Location The location of the first

waypoint of the sub leg.

endDescription string The description of the last

waypoint of the sub leg.

routhPath RoutePath The properties that define

the route line of this sub leg

on the map.

startDescription string The description of the first

waypoint of the sub leg.

summary RouteSummary The summary of this route

sub leg.

RouteSummary Class (AJAX)

Represents a route summary.

Properties

Name Type Description

distance double The total travel distance of the

route, specified in the units set in

the distanceUnit property of the

DirectionsRequestOptions.

monetaryCost double The cost of the route. This property

is only returned if the routeMode of

the DirectionsRequestOptions is set

to transit and the map culture is set

to ja-jp.

northEast Location The location of the northeast corner

of bounding box that defines the

Page 244: Bing Maps Ajax Controls Dk 70

Name Type Description

best map view of the route.

southWest Location The location of the southwest corner

of bounding box that defines the

best map view of the route.

time number The total travel time, in seconds, for

the route.

timeWithTraffic number The total travel time, in seconds,

taking into account traffic delays, for

the route. This property is 0 if the

avoidTraffic property of the

DirectionsRequestOptions is set to

false.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Page 245: Bing Maps Ajax Controls Dk 70

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions render options - in this case, specify the div where the

itinerary is displayed.

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayDistanceAndTime );

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

Page 246: Bing Maps Ajax Controls Dk 70

function displayDistanceAndTime(e)

{

alert("Total Distance: " + e.routeSummary[0].distance + " miles\n" + "Total

Time: " + e.routeSummary[0].time/60 + " minutes" );

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

RouteSummaryRenderEventArgs Object

Contains arguments for route summary render events.

Properties

Name Type Description

containerElement object The DOM element which contains

the summary. You can use this

property to add custom content.

handled boolean A boolean indicating whether the

event is handled. This property is

only available for the

beforeSummaryRender event.

Set this property to true to

Page 247: Bing Maps Ajax Controls Dk 70

Name Type Description

override the default behavior.

routeLegIndex number A number indicating the index of

the route leg which this summary

describes.

summary RouteSummary The summary that was rendered.

StepWarningStyle Enumeration

Contains types of route direction warnings.

Constants

Code Name Description

0 info The warning is just information

about the route direction.

1 minor The warning is a minor

warning, and may affect the

route direction.

2 moderate The warning is a moderate

warning and is likely to affect

the route direction.

3 major The warning is a major

warning, and is highly likely to

affect the route direction.

4 ccZoneEnter The warning indicates a

congestion zone is being

entered.

5 ccZoneExit The warning indicates a

congestion zone is being

exited.

Page 248: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

Page 249: Bing Maps Ajax Controls Dk 70

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ avoidTraffic: true });

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayMessage(e)

{

// Variable for counting warnings

var warningCount = 0;

for( j=0; j< e.route[0].routeLegs.length; j++)

{

Page 250: Bing Maps Ajax Controls Dk 70

var i = 0;

for (i=0; i < e.route[0].routeLegs[j].itineraryItems.length; i++)

{

if (e.route[0].routeLegs[j].itineraryItems[i].warnings.length != 0 )

{

warningCount = warningCount +

e.route[0].routeLegs[j].itineraryItems[i].warnings.length;

for (k=0; k<

e.route[0].routeLegs[j].itineraryItems[i].warnings.length; k++)

{

if (e.route[0].routeLegs[j].itineraryItems[i].warnings[k].style

== Microsoft.Maps.Directions.StepWarningStyle.major)

{

alert("Alert! There is a major warning in this route.");

}

}

}

}

}

alert("There are " + warningCount + " warning(s) in this route.");

}

function displayError(e)

{

alert(e.message);

}

Page 251: Bing Maps Ajax Controls Dk 70

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

TimeType Enumeration

Defines the transit time type.

Constants

Name Description

arrival The time specified is an arrival time.

departure The time specified is a departure time.

lastAvailable The time specified is the last available time.

This time type is only returned for routes with a

transit RouteMode that have the culture set to

ja-jp.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

Page 252: Bing Maps Ajax Controls Dk 70

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set arrival time to be 4 hours from now

var timeToDepart = new Date();

timeToDepart.setTime(timeToDepart.getTime() + 14400000);

Page 253: Bing Maps Ajax Controls Dk 70

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit, transitOptions:{ transitTime: timeToDepart,

timeType: Microsoft.Maps.Directions.TimeType.arrival } });

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

Page 254: Bing Maps Ajax Controls Dk 70

See Also TransitOptions Object

TransitLine Class

Contains information about a transit line.

Properties

Name Type Description

abbreviatedName string The short name for the transit

line.

agencyId number The ID of the agency that

owns the transit line.

agencyName string The name of the agency that

owns the transit line.

agencyUrl string The URL of the website of the

agency that owns the transit

line.

lineColor Color The color to use when

rendering this transit line on

the map.

lineTextColor Color The color to use when

rendering text associated with

this transit line.

providerInfo string Information about the provider

of this transit line data.

verboseName string The full name of this transit

line.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

Page 255: Bing Maps Ajax Controls Dk 70

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

Page 256: Bing Maps Ajax Controls Dk 70

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit});

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated',

displayMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'itineraryStepClicked',

displayStepMessage );

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

function displayError(e)

{

alert(e.message);

}

function displayMessage(e)

{

alert("Click a step in the itinerary to display extra transit information.");

Page 257: Bing Maps Ajax Controls Dk 70

}

function displayStepMessage(e)

{

if (e.step.iconType == Microsoft.Maps.Directions.IconType.bus )

{

alert("The name of the transit agency for this step is: " +

e.step.transitLine.agencyName + ". For information about this transit agency and transit

line, go to " + e.step.transitLine.agencyUrl + ".");

}

else

{

alert("The step that was clicked is not a transit step.");

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

TransitOptions Object

Contains extra options for transit routes.

Properties

Page 258: Bing Maps Ajax Controls Dk 70

Name Type Description

timeType TimeType The type of the time specified

in transitTime. The default

value is departure.

transitTime Date The transit time to use when

calculating the route. If this

property is set to null, the

current time is used.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

Page 259: Bing Maps Ajax Controls Dk 70

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints and add them to the route

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Bellevue,

WA"});

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set departure time to be 4 hours from now

var timeToDepart = new Date();

timeToDepart.setTime(timeToDepart.getTime() + 14400000);

// Set directions options

directionsManager.setRequestOptions({ routeMode:

Microsoft.Maps.Directions.RouteMode.transit, transitOptions:{ transitTime: timeToDepart }

});

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when the directions are calculated

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

Page 260: Bing Maps Ajax Controls Dk 70

}

function displayError(e)

{

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

Waypoint Class (AJAX)

Represents a route waypoint.

Constructor

Name Definition Description

Waypoint Waypoint(options:WaypointOptions) Initializes a new instance

of the Waypoint class.

Methods

Name Definition Return Value Description

clear clear() None Clears all

options

Page 261: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

associated

with this

waypoint.

dispose dispose() None Releases any

resources

associated

with the

waypoint.

getAddress getAddress() string Returns the

address

associated

with the

waypoint.

getBusinessDetails getBusinessDetails() BusinessDetail

s

Returns the

business

details

associated

with the

waypoint.

getDisambiguationRes

ult

getDisambiguationResult() Disambiguatio

n

Returns the

result of the

waypoint

geocoding

disambiguatio

n.

getLocation getLocation() Location Returns the

location of the

waypoint.

getPushpin getPushpin() Pushpin Returns the

custom

pushpin

associated

with this

waypoint, if

one has been

specified.

getShortAddress getShortAddress() string Returns the

short address

Page 262: Bing Maps Ajax Controls Dk 70

Name Definition Return Value Description

for the

waypoint.

isExactLocation isExactLocation() boolean Returns a

boolean

indicating

whether the

waypoint

location is the

exact location.

isViapoint isViapoint() boolean Returns a

boolean value

indicating

whether the

waypoint is a

via point. A via

point is a

location that

your route is

guaranteed to

pass through.

There can be

multiple via

points

between two

stop points.

setOptions setOptions(options:WaypointOptio

ns)

None Sets options

for the

waypoint. For

these options

to take effect,

you must

recalculate the

route.

Events

Page 263: Bing Maps Ajax Controls Dk 70

Name Arguments Description

changed WaypointEventArgs Occurs when the any

properties of the waypoint

change or are updated.

geocoded WaypointEventArgs Occurs when a geocoding

request for the waypoint‟s

address is made.

reverseGeocoded WaypointEventArgs Occurs when a reverse

geocoding request for the

waypoint‟s location is made.

This happens when no

address is provided for the

waypoint, or if the waypoint

is dragged (in which case

its location is changed).

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

Page 264: Bing Maps Ajax Controls Dk 70

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({address:"Seattle,

WA"});

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address:

"Microsoft" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

Page 265: Bing Maps Ajax Controls Dk 70

}

function displayError(e)

{

// Display the error message

alert(e.message);

// If the error is a disambiguation error, display the results.

if (e.responseCode ==

Microsoft.Maps.Directions.RouteResponseCode.waypointDisambiguation)

{

SelectFirstDisambiguationResult();

}

}

function SelectFirstDisambiguationResult()

{

var results = "";

var waypoints = directionsManager.getAllWaypoints();

var recalculate = false;

var i = 0;

for (i=0; i<waypoints.length; i++)

{

var disambigResult = waypoints[i].getDisambiguationResult();

Page 266: Bing Maps Ajax Controls Dk 70

if (disambigResult != null)

{

// Reset the address to the first business or location suggestion

var firstAddress = disambigResult.businessSuggestions.length > 0 ?

disambigResult.businessSuggestions[0].address :

disambigResult.locationSuggestions[0].suggestion;

waypoints[i].setOptions({ address: firstAddress });

// Set the recalculate flag since the waypoint address was changed

recalculate = true;

}

}

if (recalculate)

{

directionsManager.calculateDirections();

}

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

WaypointEventArgs Object

Contains the arguments for route waypoint events.

Page 267: Bing Maps Ajax Controls Dk 70

Properties

Name Type Description

waypoint Waypoint The waypoint for which the

event occurred.

WaypointOptions Object

Contains waypoint options.

Properties

Name Type Description

address string The address string, business

name, or search string of the

waypoint. For example, the

following strings are valid for this

parameter: “Seattle”, “Microsoft”,

“pizza”, or “pizza Seattle”. Either

the address or location property

must be specified.

businessDetails BusinessDetails The business details of the

waypoint, if it is a business.

exactLocation boolean A boolean indicating whether the

waypoint location is the exact

location. The default value is

false.

isViapoint boolean A boolean indicating whether the

waypoint is a via point. A via point

is a point along the route that is

not a stop point. Set this property

to true if you just want the route to

pass through this location. The

default value is false.

location Location The location of the waypoint.

Either the address or location

Page 268: Bing Maps Ajax Controls Dk 70

Name Type Description

property must be specified.

pushpin Pushpin The custom pushpin to use to

represent this waypoint. This

property overrides any pushpin

options that apply to this waypoint

that have been set in the

DirectionsRenderOptions Object.

shortAddress string The short address of the

waypoint.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var directionsManager = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback:

directionsModuleLoaded });

Page 269: Bing Maps Ajax Controls Dk 70

}

function directionsModuleLoaded()

{

// Initialize the DirectionsManager

directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);

// Create start and end waypoints

var startWaypoint = new Microsoft.Maps.Directions.Waypoint({ location: new

Microsoft.Maps.Location(47.5, -121.9) });

var viaWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: "1

Microsoft Way, Redmond, WA" , isViapoint: true });

var endWaypoint = new Microsoft.Maps.Directions.Waypoint({ address:"Space

Needle" } );

directionsManager.addWaypoint(startWaypoint);

directionsManager.addWaypoint(viaWaypoint);

directionsManager.addWaypoint(endWaypoint);

// Set the id of the div to use to display the directions

directionsManager.setRenderOptions({ itineraryContainer:

document.getElementById('itineraryDiv') });

// Specify a handler for when an error and success occurs

Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError',

displayError);

// Calculate directions, which displays a route on the map

directionsManager.calculateDirections();

}

Page 270: Bing Maps Ajax Controls Dk 70

function displayError(e)

{

// Display the error message

alert(e.message);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:400px; height:400px;"></div>

<div id='itineraryDiv' style="position:relative; width:400px;"></div>

</body>

</html>

WaypointRenderEventArgs Object

Contains arguments for waypoint render events.

Properties

Name Type Description

containerElement object The DOM element which contains

the waypoint. You can use this

property to add custom content.

handled boolean A boolean indicating whether the

event is handled. This property is

only available for the

beforeWaypointRender event.

Set this property to true to override

the default behavior.

waypoint Waypoint The waypoint for which the event

occurred.

Page 271: Bing Maps Ajax Controls Dk 70

Microsoft.Maps.Overlays.Style Reference

This section contains reference documentation for the Microsoft.Maps.Overlays.Style module,

which allows you to access Bing Maps overlay styles.

Before you can access Microsoft.Maps.Overlays.Style styles, you must first load this

module using the loadModule method. Information about loading modules is in the

Module Loading Methods topic.

Navigation Bar Style To load the new Bing Maps navigation bar, load the Microsoft.Maps.Overlays.Style module, then

set the customizeOverlays map option to true.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

Microsoft.Maps.loadModule('Microsoft.Maps.Overlays.Style', { callback: GetMap });

function GetMap()

{

var options = {credentials: "Bing Maps Key", center: new

Microsoft.Maps.Location(47.5, -122.3), zoom: 9, customizeOverlays: true }

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), options );

Page 272: Bing Maps Ajax Controls Dk 70

}

</script>

</head>

<body>

<div id='mapDiv' style="position:relative; width:600px; height:600px;"></div>

</body>

</html>

Microsoft.Maps.Traffic API Reference

This section contains reference documentation for the Microsoft.Maps.Traffic API, which contains

types that allow you to display traffic on your Bing Maps AJAX Control 7.0 map.

Before you can access the types found in the Microsoft.Maps.Traffic API, you must first

load this module using the loadModule method. Information about loading modules is in

the Module Loading Methods topic.

In This Section TrafficLayer Class

TrafficLayer Class

Represents a traffic layer on the map.

Constructor

Name Definition Description

TrafficLayer TrafficLayer(map:Map) Initializes a new instance of

the TrafficLayer class.

Page 273: Bing Maps Ajax Controls Dk 70

Methods

Name Definition Return Value Description

getTileLayer getTileLayer() TileLayer Returns the traffic

layer.

hide hide() None Hides the traffic layer.

show show() None Displays the traffic

layer.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:

"Bing Maps Key", center: new Microsoft.Maps.Location(47.5, -122.3), zoom: 9 });

Microsoft.Maps.loadModule('Microsoft.Maps.Traffic', { callback:

trafficModuleLoaded });

Page 274: Bing Maps Ajax Controls Dk 70

}

function trafficModuleLoaded()

{

var trafficLayer = new Microsoft.Maps.Traffic.TrafficLayer(map);

trafficLayer.show();

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:600px; height:600px;"></div>

</body>

</html>

Microsoft.Maps.VenueMaps API Reference

This section contains reference documentation for the Microsoft.Maps.VenueMaps API. Use the

VenueMapFactory Class to search for available venue maps.

Before you can access the types found in the Microsoft.Maps.VenueMaps API, you must

first load this module using the loadModule method. Information about loading modules

is in the Module Loading Methods topic.

In This Section Floor Class

Footprint Class

Metadata Class

NearbyVenue Class

NearbyVenueOptions Object

Polygon Class

Primitive Class

Page 275: Bing Maps Ajax Controls Dk 70

VenueMap Class

VenueMapCreationOptions Object

VenueMapFactory Class

Floor Class

Represents one floor map of a venue map.

Properties

Name Type Description

name string The name of the floor.

primitives Primitive[] An array of Primitive objects

that represent the points of

interest (for example, stores)

on this venue floor.

zoomRange double[] An array of doubles indicating

the minimum and maximum

zoom levels where imagery is

available for this venue map

floor.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

Page 276: Bing Maps Ajax Controls Dk 70

var map = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

vmaps.create({venueMapId: 'bingmapsteam-bellevuesquare', success:ShowVenue,

error:ShowError});

}

function ShowVenue(venue)

{

// Set the map view

map.setView(venue.bestMapView);

venue.show();

DisplayVenueFloorInfo(venue);

Page 277: Bing Maps Ajax Controls Dk 70

}

function ShowError()

{

// Show an error

alert("An error occurred trying to create the venue map.");

}

function DisplayVenueFloorInfo(venue)

{

var floors = "Available floor maps for " + venue.name +":\n";

for(var i in venue.floors)

{

floors = floors + venue.floors[i].name + "\n";

}

// Display the floor info

alert(floors);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Page 278: Bing Maps Ajax Controls Dk 70

Footprint Class

Represents the footprint of the venue map.

Properties

Name Type Description

polygons Polygon[] The shapes that make up the

footprint of this venue.

zoomRange double[] An array of doubles indicating

the minimum and maximum

zoom levels where imagery is

available for this venue map.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key"});

Page 279: Bing Maps Ajax Controls Dk 70

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

vmaps.create({venueMapId: 'bingmapsteam-bellevuesquare', success:ShowVenue,

error:ShowError});

}

function ShowVenue(venue)

{

// Set the map view

map.setView(venue.bestMapView);

venue.show();

DisplayVenueInfo(venue);

}

function ShowError()

{

// Show an error

alert("An error occurred trying to create the venue map.");

}

function DisplayVenueInfo(venue)

{

Page 280: Bing Maps Ajax Controls Dk 70

var venueinfo = "Venue: " + venue.name +"\n" + "Venue Map ID: " + venue.id +

"\n" + "Venue Map Type: " + venue.type + "\n" + "Default Floor: " + venue.defaultFloor +

"\n" + "Detail Level Range for Default Floor: " + venue.footprint.zoomRange + "\n";

// Display the venue info

alert(venueinfo);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Metadata Class

Contains information about a venue map.

Properties

Name Type Description

CenterLat number The latitude of the center

location of the venue map.

CenterLong number The longitude of the center

location of the venue map.

DefaultFloor string The ID of the default floor of

the venue map.

FloorHeader string A string used in the floor bar of

the venue map.

Floors Floor[] An array containing the floors

of the venue map.

Footprint Footprint The footprint of the venue

Page 281: Bing Maps Ajax Controls Dk 70

Name Type Description

map.

MapId string The unique ID of the venue

map.

MapType string A string describing the venue

map type (for example, “mall”).

Name string The name of the venue map.

YpId string The Yellow Pages ID of the

venue.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map and set the view to a specific location

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key",

center: new Microsoft.Maps.Location(47.6,-122.3), zoom:11});

Page 282: Bing Maps Ajax Controls Dk 70

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

// Search for nearby venues

vmaps.getNearbyVenues({map: map, location: map.getCenter(), radius:10000,

callback:DisplayNearbyVenueCount});

}

function DisplayNearbyVenueCount(venues)

{

var displayResults = "Nearby venues with available venue maps:\n";

for (var i=0; i<venues.length; i++)

{

displayResults = displayResults + venues[i].metadata.Name + "\t" +

venues[i].distance/1000 + " km\n";

}

alert(displayResults);

}

</script>

Page 283: Bing Maps Ajax Controls Dk 70

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

NearbyVenue Class

Defines a nearby venue map.

Properties

Name Type Description

distance double The distance, in meters, to the

venue.

metadata Metadata The venue map metadata.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

Page 284: Bing Maps Ajax Controls Dk 70

{

// Initialize the map and set the view to a specific location

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key",

center: new Microsoft.Maps.Location(47.6,-122.3), zoom:11});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

// Search for nearby venues

vmaps.getNearbyVenues({map: map, location: map.getCenter(), radius:10000,

callback:DisplayNearbyVenueCount});

}

function DisplayNearbyVenueCount(venues)

{

var displayResults = "Nearby venues with available venue maps:\n";

for (var i=0; i<venues.length; i++)

{

displayResults = displayResults + venues[i].metadata.Name + "\t" +

venues[i].distance/1000 + " km\n";

}

Page 285: Bing Maps Ajax Controls Dk 70

alert(displayResults);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

NearbyVenueOptions Object

Contains search options for retrieving nearby venue maps.

Properties

Name Type Description

callback function The function to call when the

search is completed. The

function must accept an array

of VenueMap objects.

location Location The center of the circle in which

to search for nearby venue

maps.

map Map The base map.

radius double The radius, in meters, of the

circle in which to search for

nearby venue maps.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Page 286: Bing Maps Ajax Controls Dk 70

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map and set the view to a specific location

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key",

center: new Microsoft.Maps.Location(47.6,-122.3), zoom:11});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

// Search for nearby venues

vmaps.getNearbyVenues({map: map, location: map.getCenter(), radius:10000,

callback:DisplayNearbyVenueCount});

Page 287: Bing Maps Ajax Controls Dk 70

}

function DisplayNearbyVenueCount(venues)

{

alert("There are " + venues.length + " venue maps nearby.");

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Polygon Class (Venue Map)

Defines the shape of venue map entities.

Properties

Name Type Description

bounds LocationRect The rectangle that defines the

bounding box for the polygon.

center Location The center of the polygon.

locations Location[] The locations that define the

vertices of the polygon.

Primitive Class

Represents a venue map primitive, which represents a venue map entity.

Page 288: Bing Maps Ajax Controls Dk 70

Properties

Name Type Description

bounds LocationRect The rectangle that defines the

bounding box for the

primitive.

businessId string The Yellow Pages ID for the

entity.

categoryId string The Yellow Pages business

category ID for the entity.

categoryName string The Yellow Pages business

category name for the entity.

center Location The location of the center of

the primitive.

floor Floor The floor to which this

primitive belongs.

id string The unique ID of the entity.

locations Location[] An array of locations that

represent the vertices of the

primitive.

name string The name of the entity.

Methods

Name Definition Return Type Description

highlight highlight() None Highlights the

primitive.

unhighlight unhighlight() None Removes the

highlighting of the

primitive.

Page 289: Bing Maps Ajax Controls Dk 70

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var vmaps = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

vmaps.create({venueMapId: 'bingmapsteam-bellevuesquare', success:ShowVenue});

Page 290: Bing Maps Ajax Controls Dk 70

}

function ShowVenue(venue)

{

// Set the map view

map.setView(venue.bestMapView);

venue.show();

Microsoft.Maps.Events.addHandler(venue, 'click', DisplayVenueEntity);

alert("Click on the venue map to display entity info.");

}

function DisplayVenueEntity(e)

{

alert("The name of the store that was clicked is " + e.name + ".");

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Page 291: Bing Maps Ajax Controls Dk 70

VenueMap Class

Represents a venue map. An example of a venue map is a mall.

Properties

Name Type Description

address string The full address of the venue.

bestMapView ViewOptions The best map view of the

venue map.

businessId string The Yellow Pages ID for the

venue map.

center Location The location of the center of

the venue map.

defaultFloor string The floor that is displayed if

no floor is specified.

floorHeader string The header for floors for this

venue map. For example, for

a mall the floor header would

be “Level”.

floors Floor[] An array, where each element

represents a floor of the

venue.

footprint Footprint The shapes that make up the

venue map.

id string The unique venue map ID.

name string The name of the venue

represented by the venue

map.

phoneNumber string The phone number for the

venue represented by the

venue map.

type string The venue map type, such as

“Mall”.

Page 292: Bing Maps Ajax Controls Dk 70

Methods

Name Definition Return Type Description

dispose dispose() None Disposes the

venue map

object.

getActiveFloor getActiveFloor() string Returns the

venue floor map

that is currently

displayed.

hide hide() None Hides the venue

map.

setActiveFloor setActiveFloor(venueMapId:string,

floor:string)

None Displays the

specified floor

map for the

venue map

identified by the

given ID.

show show() None Displays the

venue map.

Events

Name Arguments Description

click eventArgs:Primitive Occurs when the mouse is

used to click the venue map.

close None Occurs when the close

button on the venue map is

clicked.

footprintclick eventArgs:Primitive Occurs when the detailed

map of the venue is clicked.

mouseout eventArgs:Primitive Occurs when the mouse

cursor moves out of the area

covered by the venue map.

mouseover eventArgs:Primitive Occurs when the mouse

Page 293: Bing Maps Ajax Controls Dk 70

Name Arguments Description

cursor is over the venue

map.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

var venue = null;

function GetMap()

{

// Initialize the map

map = new

Microsoft.Maps.Map(document.getElementById("mapDiv"),{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

Page 294: Bing Maps Ajax Controls Dk 70

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

vmaps.create({venueMapId: 'bingmapsteam-bellevuesquare', success:SetVenue});

}

function SetVenue(venueObj)

{

venue = venueObj;

}

function ShowVenue()

{

// Set the map view

map.setView(venue.bestMapView);

venue.show();

}

function HideVenue()

{

venue.hide();

}

</script>

</head>

<body onload="GetMap();">

Page 295: Bing Maps Ajax Controls Dk 70

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

<input type="button" value="Show Venue Map" onclick="ShowVenue()"/><input

type="button" value="Hide Venue Map" onclick="HideVenue()"/>

</body>

</html>

VenueMapCreationOptions Object

Contains options for creating a venue map.

Properties

Name Type Description

error function The function to call if the venue

map was not successfully

created. The function must

accept two parameters: an

integer which is an error code

and an object that contains the

arguments passed to the create

method of the VenueMapFactory.

The error codes are:

1 The metadata needed to

create the venue map was

not found because of a 404

or other web exception, or

because the metadata was

found but was empty.

2 The venue map metadata

is invalid.

3 A timeout has occurred

trying to retrieve the venue

map metadata.

success function The function to call if the venue

map was successfully created.

The function must accept two

parameters: a VenueMap and an

object that contains the

arguments passed to the create

Page 296: Bing Maps Ajax Controls Dk 70

Name Type Description

method of the VenueMapFactory.

venueMapId string A string that identifies the venue

map to display.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

Page 297: Bing Maps Ajax Controls Dk 70

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

vmaps.create({venueMapId: 'bingmapsteam-bellevuesquare', success:ShowVenue,

error:ShowError});

}

function ShowVenue(venue)

{

// Set the map view

map.setView(venue.bestMapView);

venue.show();

}

function ShowError()

{

// Show an error

alert("An error occurred trying to create the venue map.");

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

VenueMapFactory Class

Contains methods for creating a venue map.

Constructor

Page 298: Bing Maps Ajax Controls Dk 70

Name Definition Description

VenueMapFactory VenueMapFactory(map:Map) Initializes a new instance of

the VenueMapFactory class.

Methods

Name Definition Retur

n

Type

Description

create create(options:VenueMapCreationOptions) None Creates a venue map.

If the venue map is

created successfully, a

VenueMap is returned

to the function specified

in the success property

of the

VenueMapCreationOpti

ons.

You can display a

venue map using the

show method of the

VenueMap Class.

getNearbyVen

ues

getNearbyVenues(options:NearbyVenueMap

Options)

None Searches for venue

maps within a specified

distance. The callback

function must accept a

NearbyVenue array.

Example <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Page 299: Bing Maps Ajax Controls Dk 70

<script type="text/javascript"

src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<script type="text/javascript">

var map = null;

function GetMap()

{

// Initialize the map

map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),

{credentials:"Bing Maps Key"});

Microsoft.Maps.loadModule('Microsoft.Maps.VenueMaps', { callback:

venuemapsModuleLoaded });

}

function venuemapsModuleLoaded()

{

// Create the venue map

var vmaps = new Microsoft.Maps.VenueMaps.VenueMapFactory(map);

vmaps.create({venueMapId: 'bingmapsteam-bellevuesquare',

success:DisplayInfobox});

}

function DisplayInfobox(venue)

{

// Set the map view

map.setView(venue.bestMapView);

venue.show();

// Put an info box label on the map

mapCenter = map.getTargetCenter();

Page 300: Bing Maps Ajax Controls Dk 70

var venueinfobox = new Microsoft.Maps.Infobox(mapCenter, {title: venue.name,

showPointer: false, showCloseButton:false, height: 50, width: 180, offset:new

Microsoft.Maps.Point(-220, 150)});

map.entities.push(venueinfobox);

}

</script>

</head>

<body onload="GetMap();">

<div id='mapDiv' style="position:relative; width:500px; height:500px;"></div>

</body>

</html>

Bing Maps AJAX Control 7.0 Supported Browsers

This topic contains information about browser support for the Bing Maps AJAX Control 7.0.

The Bing Maps AJAX Control 7.0 uses features of HTML5 if it detects that the client

browser supports HTML5. If this is the case, map performance will be faster, and map

animations and transitions will be smoother.

Supported Browsers The Bing Maps AJAX Control 7.0 is supported on the following Web browsers. If you are not

using a supported Web browser, certain features of the map control may not work.

Desktop Browser Description

Internet Explorer 7.0 Supported on the PC

Internet Explorer 8.0 Supported on the PC

Internet Explorer 9.0 Supported on the PC

Firefox 3.6 Supported on the PC and the Mac

Firefox 4.0 Supported on the PC and the Mac

Page 301: Bing Maps Ajax Controls Dk 70

Desktop Browser Description

Safari 5 Supported on the Mac

Google Chrome Supported on the PC

Mobile Browser

Apple 3GS/4.0 iPhone Browser

Google Android 2.X Browser

Research in Motion (RIM) BlackBerry 6.0

Browser

Bing Maps AJAX Control 7.0 Developer Resources

This topic contains support resources and contact information.

Developer Resources The following resources are available for Bing Maps developers:

Check out the Bing Maps AJAX Control 7.0 Interactive SDK, which allows you to test out your

own map control code.

Connect with other Bing Maps developers on the Bing Maps AJAX Control Forum.

Visit the http://www.microsoft.com/maps website.

Read the Bing Maps Developer blog

Account Issues If you are having issues creating a Bing Maps Developer Account, getting a Bing Maps Key, or

have an account access question, contact [email protected].

Licensing Questions If you are interested in finding out more about Bing Maps or have questions about licensing Bing

Maps, email [email protected] or go to

http://www.microsoft.com/maps/resources/default.aspx. From North, Central, and South America,

you can also contact Bing Maps by calling (800) 426-9400, ext. 11315.

Page 302: Bing Maps Ajax Controls Dk 70