Autodesk 15606-011408-9300 Developer Guide - Page 45

Controlling Map Refresh Operations, Using the autoRefresh Flag

Page 45 highlights

Controlling Map Refresh Operations You can ensure that Autodesk MapGuide Viewer will not enter a busy state by controlling when display refreshes occur. The first step is to remember that display refreshes always occur in the following instances: I When the autoRefresh flag is set to True with MGMap.setAutoRefresh, and the application calls an API method that requires an automatic refresh such as MGMap.zoomSelected. Methods requiring an automatic refresh are noted in the Autodesk MapGuide Viewer API Help. I Your application calls zoomGotoDlg, zoomGotoLocation, setUrl, or refresh. These methods always invoke a display refresh, even if the autoRefresh flag is set to false. The only exception is if you call one of these methods from onViewChanging or onMapLoaded event handling code. Under these circumstances, the methods will fail and will set error code to -14 (refresh disabled) because the onViewChanging and onMapLoaded events always disable the autoRefresh flag. Using the autoRefresh Flag To develop an application that executes smoothly, you need to prevent busy states while the application calls methods in the API that do not work during the busy state. To do this, you need to disable the autoRefresh flag. To disable the autoRefresh Flag 1 Set the autoRefresh flag to False immediately before calling the first method. 2 Reset the autoRefresh flag to True. 3 Call the refresh method immediately after your application calls the other methods that do not work during the busy state. Simply setting the autoRefresh flag back to True with MGMap.setAutoRefresh does not refresh the map. For example: function selectAndZoomToPointObject(mgObj) { var map = getMap(); var sel = map.getSelection(); map.setAutoRefresh(false); // Prevent busy state from happening // when zoomSelected is called sel.clear(); sel.addObject(mgObj); map.zoomSelected(); map.setWidth(5, "KM"); map.setAutoRefresh(true); // Reset the autoRefresh flag map.refresh(); // Update the display } Handling Busy State and Map Refresh | 45

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208

Handling Busy State and Map Refresh
|
45
Controlling Map Refresh Operations
You can ensure that Autodesk MapGuide Viewer will not enter a busy state
by controlling when display refreshes occur. The first step is to remember
that display refreshes
always
occur in the following instances:
When the
autoRefresh
flag is set to
True
with
MGMap.setAutoRefresh
,
and
the application calls an API method that requires an automatic refresh
such as
MGMap.zoomSelected
. Methods requiring an automatic refresh
are noted in the
Autodesk MapGuide Viewer API Help
.
Your application calls
zoomGotoDlg
,
zoomGotoLocation
,
setUrl
, or
refresh
. These methods
always
invoke a display refresh, even if the
autoRefresh
flag is set to false. The only exception is if you call one of
these methods from
onViewChanging
or
onMapLoaded
event handling
code. Under these circumstances, the methods will fail and will set error
code to
-14 (refresh disabled)
because the
onViewChanging
and
onMapLoaded
events always disable the
autoRefresh
flag.
Using the autoRefresh Flag
To develop an application that executes smoothly, you need to prevent busy
states while the application calls methods in the API that do not work during
the busy state. To do this, you need to disable the
autoRefresh
flag.
To disable the autoRefresh Flag
1
Set the
autoRefresh
flag to
False
immediately before calling the first
method.
2
Reset the
autoRefresh
flag to
True
.
3
Call the
refresh
method immediately after your application calls the
other methods that do not work during the busy state. Simply setting the
autoRefresh
flag back to
True
with
MGMap.setAutoRefresh
does not
refresh the map. For example:
function selectAndZoomToPointObject(mgObj)
{
var map = getMap();
var sel = map.getSelection();
map.setAutoRefresh(false); // Prevent busy state from happening
// when zoomSelected is called
sel.clear();
sel.addObject(mgObj);
map.zoomSelected();
map.setWidth(5, "KM");
map.setAutoRefresh(true); // Reset the autoRefresh flag
map.refresh();
// Update the display
}