PageRenderTime 74ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/examples/MarkerManagerDemo/bin-release/srcview/source/com/google/maps/examples/MarkerManager.as.html

http://gmaps-utility-library-flash.googlecode.com/
HTML | 727 lines | 643 code | 83 blank | 1 comment | 0 complexity | f9b25b2c778f7d42552e7fa30b6dfba8 MD5 | raw file
  1. <!-- saved from url=(0014)about:internet -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6. <title>MarkerManager.as</title>
  7. <link rel="stylesheet" type="text/css" href="../../../../../SourceStyles.css"/>
  8. </head>
  9. <body><pre><span class="ActionScriptComment">/*
  10. * MarkerManager, v1.0
  11. * Copyright (c) 2007 Google Inc.
  12. * Author: Doug Ricket, others
  13. * Ported to AS3 by Pamela Fox
  14. *
  15. * Licensed under the Apache License, Version 2.0:
  16. * http://www.apache.org/licenses/LICENSE-2.0
  17. *
  18. * Marker manager is an interface between the map and the user, designed
  19. * to manage adding and removing many points when the viewport changes.
  20. *
  21. * Algorithm: The MM places its markers onto a grid, similar to the map tiles.
  22. * When the user moves the viewport, the MM computes which grid cells have
  23. * entered or left the viewport, and shows or hides all the markers in those
  24. * cells.
  25. * (If the users scrolls the viewport beyond the markers that are loaded,
  26. * no markers will be visible until the EVENT_moveend triggers an update.)
  27. *
  28. * In practical consequences, this allows 10,000 markers to be distributed over
  29. * a large area, and as long as only 100-200 are visible in any given viewport,
  30. * the user will see good performance corresponding to the 100 visible markers,
  31. * rather than poor performance corresponding to the total 10,000 markers.
  32. *
  33. * Note that some code is optimized for speed over space,
  34. * with the goal of accommodating thousands of markers.
  35. *
  36. */</span>
  37. <span class="ActionScriptpackage">package</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">examples</span> <span class="ActionScriptBracket/Brace">{</span>
  38. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">events</span>.<span class="ActionScriptDefault_Text">Event</span>;
  39. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">events</span>.<span class="ActionScriptDefault_Text">MouseEvent</span>;
  40. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">geom</span>.<span class="ActionScriptDefault_Text">Point</span>;
  41. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">display</span>.<span class="ActionScriptDefault_Text">DisplayObject</span>;
  42. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">display</span>.<span class="ActionScriptDefault_Text">Sprite</span>;
  43. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">display</span>.<span class="ActionScriptDefault_Text">Shape</span>;
  44. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">TextField</span>;
  45. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">TextFieldAutoSize</span>;
  46. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">TextFormat</span>;
  47. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">MapEvent</span>;
  48. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">MapMoveEvent</span>;
  49. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">Map</span>;
  50. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">LatLng</span>;
  51. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">LatLngBounds</span>;
  52. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">examples</span>.<span class="ActionScriptDefault_Text">GridBounds</span>;
  53. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">overlays</span>.<span class="ActionScriptDefault_Text">Marker</span>;
  54. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">interfaces</span>.<span class="ActionScriptDefault_Text">IMap</span>;
  55. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">google</span>.<span class="ActionScriptDefault_Text">maps</span>.<span class="ActionScriptDefault_Text">interfaces</span>.<span class="ActionScriptDefault_Text">IProjection</span>;
  56. <span class="ActionScriptReserved">public</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">MarkerManager</span> <span class="ActionScriptBracket/Brace">{</span>
  57. <span class="ActionScriptComment">// Static constants:
  58. </span><span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">DEFAULT_TILE_SIZE</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1024;
  59. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">DEFAULT_MAX_ZOOM</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 17;
  60. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">DEFAULT_BORDER_PADDING</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 100;
  61. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">MERCATOR_ZOOM_LEVEL_ZERO_RANGE</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 256;
  62. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">map_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">IMap</span>;
  63. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">mapZoom_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>;
  64. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxZoom_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>;
  65. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">projection_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">IProjection</span>;
  66. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">trackMarkers_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span>;
  67. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">swPadding_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span>;
  68. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">nePadding_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span>;
  69. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">borderPadding_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>;
  70. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridWidth_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span>;
  71. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">grid_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span>;
  72. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">numMarkers_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span>;
  73. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">shownBounds_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span>;
  74. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">shownMarkers_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>;
  75. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">tileSize_</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>;
  76. <span class="ActionScriptASDoc">/**
  77. * Creates a new MarkerManager that will show/hide markers on a map.
  78. *
  79. * @constructor
  80. * @param {Map} map The map to manage.
  81. * @param {Object} opt_opts A container for optional arguments:
  82. * {Number} maxZoom The maximum zoom level for which to create tiles.
  83. * {Number} borderPadding The width in pixels beyond the map border,
  84. * where markers should be display.
  85. * {Boolean} trackMarkers Whether or not this manager should track marker
  86. * movements.
  87. */</span>
  88. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">MarkerManager</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">map</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">IMap</span>, <span class="ActionScriptDefault_Text">opt_opts</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Object</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  89. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">map_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">map</span>;
  90. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">mapZoom_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">map</span>.<span class="ActionScriptDefault_Text">getZoom</span><span class="ActionScriptBracket/Brace">()</span>;
  91. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">projection_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">map</span>.<span class="ActionScriptDefault_Text">getCurrentMapType</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">getProjection</span><span class="ActionScriptBracket/Brace">()</span>;
  92. <span class="ActionScriptDefault_Text">opt_opts</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">opt_opts</span> <span class="ActionScriptOperator">||</span> <span class="ActionScriptBracket/Brace">{}</span>;
  93. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">tileSize_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">DEFAULT_TILE_SIZE</span>;
  94. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">DEFAULT_MAX_ZOOM</span>;
  95. <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">opt_opts</span>.<span class="ActionScriptDefault_Text">maxZoom</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptReserved">undefined</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  96. <span class="ActionScriptDefault_Text">maxZoom</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">opt_opts</span>.<span class="ActionScriptDefault_Text">maxZoom</span>;
  97. <span class="ActionScriptBracket/Brace">}</span>
  98. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">maxZoom_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">maxZoom</span>;
  99. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">trackMarkers_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">opt_opts</span>.<span class="ActionScriptDefault_Text">trackMarkers</span>;
  100. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">padding</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>;
  101. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">opt_opts</span>.<span class="ActionScriptDefault_Text">borderPadding</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  102. <span class="ActionScriptDefault_Text">padding</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">opt_opts</span>.<span class="ActionScriptDefault_Text">borderPadding</span>;
  103. <span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptReserved">else</span> <span class="ActionScriptBracket/Brace">{</span>
  104. <span class="ActionScriptDefault_Text">padding</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">DEFAULT_BORDER_PADDING</span>;
  105. <span class="ActionScriptBracket/Brace">}</span>
  106. <span class="ActionScriptComment">// The padding in pixels beyond the viewport, where we will pre-load markers.
  107. </span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">swPadding_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">padding</span>, <span class="ActionScriptDefault_Text">padding</span><span class="ActionScriptBracket/Brace">)</span>;
  108. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">nePadding_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">padding</span>, <span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">padding</span><span class="ActionScriptBracket/Brace">)</span>;
  109. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">borderPadding_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">padding</span>;
  110. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">gridWidth_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Array</span><span class="ActionScriptBracket/Brace">()</span>;
  111. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">grid_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Array</span><span class="ActionScriptBracket/Brace">()</span>;
  112. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">grid_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Array</span><span class="ActionScriptBracket/Brace">()</span>;
  113. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">numMarkers_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Array</span><span class="ActionScriptBracket/Brace">()</span>;
  114. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">numMarkers_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 0;
  115. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">map_</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">MapMoveEvent</span>.<span class="ActionScriptDefault_Text">MOVE_END</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">onMapMoveEnd_</span><span class="ActionScriptBracket/Brace">)</span>;
  116. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">resetManager_</span><span class="ActionScriptBracket/Brace">()</span>;
  117. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownMarkers_</span> <span class="ActionScriptOperator">=</span> 0;
  118. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getMapGridBounds_</span><span class="ActionScriptBracket/Brace">()</span>;
  119. <span class="ActionScriptBracket/Brace">}</span>;
  120. <span class="ActionScriptComment">// NOTE: These two closures provide easy access to the map.
  121. </span><span class="ActionScriptComment">// They are used as callbacks, not as methods.
  122. </span><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Marker</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  123. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">map_</span>.<span class="ActionScriptDefault_Text">removeOverlay</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  124. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownMarkers_</span><span class="ActionScriptOperator">--</span>;
  125. <span class="ActionScriptBracket/Brace">}</span>
  126. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addOverlay_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Marker</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  127. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">map_</span>.<span class="ActionScriptDefault_Text">addOverlay</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  128. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownMarkers_</span><span class="ActionScriptOperator">++</span>;
  129. <span class="ActionScriptBracket/Brace">}</span>
  130. <span class="ActionScriptASDoc">/**
  131. * Initializes MarkerManager arrays for all zoom levels
  132. * Called by constructor and by clearAllMarkers
  133. */</span>
  134. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">resetManager_</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  135. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">mapWidth</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">MERCATOR_ZOOM_LEVEL_ZERO_RANGE</span>;
  136. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; <span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">maxZoom_</span>; <span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  137. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">grid_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Array</span><span class="ActionScriptBracket/Brace">()</span>;
  138. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">numMarkers_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 0;
  139. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">gridWidth_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">ceil</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">mapWidth</span><span class="ActionScriptOperator">/</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">tileSize_</span><span class="ActionScriptBracket/Brace">)</span>;
  140. <span class="ActionScriptDefault_Text">mapWidth</span> <span class="ActionScriptOperator">&lt;&lt;=</span> 1;
  141. <span class="ActionScriptBracket/Brace">}</span>
  142. <span class="ActionScriptBracket/Brace">}</span>
  143. <span class="ActionScriptASDoc">/**
  144. * Removes all currently displayed markers
  145. * and calls resetManager to clear arrays
  146. */</span>
  147. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">clearMarkers</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  148. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processAll_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  149. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">resetManager_</span><span class="ActionScriptBracket/Brace">()</span>;
  150. <span class="ActionScriptBracket/Brace">}</span>
  151. <span class="ActionScriptASDoc">/**
  152. * Gets the tile coordinate for a given latlng point.
  153. *
  154. * @param {LatLng} latlng The geographical point.
  155. * @param {Number} zoom The zoom level.
  156. * @param {GSize} padding The padding used to shift the pixel coordinate.
  157. * Used for expanding a bounds to include an extra padding
  158. * of pixels surrounding the bounds.
  159. * @return {GPoint} The point in tile coordinates.
  160. *
  161. */</span>
  162. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">latlng</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">padding</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptBracket/Brace">{</span>
  163. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">pixelPoint</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">projection_</span>.<span class="ActionScriptDefault_Text">fromLatLngToPixel</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">latlng</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">)</span>;
  164. <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span>
  165. <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">floor</span><span class="ActionScriptBracket/Brace">((</span><span class="ActionScriptDefault_Text">pixelPoint</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">padding</span>.<span class="ActionScriptDefault_Text">x</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">tileSize_</span><span class="ActionScriptBracket/Brace">)</span>,
  166. <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">floor</span><span class="ActionScriptBracket/Brace">((</span><span class="ActionScriptDefault_Text">pixelPoint</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">padding</span>.<span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">tileSize_</span><span class="ActionScriptBracket/Brace">))</span>;
  167. <span class="ActionScriptBracket/Brace">}</span>;
  168. <span class="ActionScriptASDoc">/**
  169. * Finds the appropriate place to add the marker to the grid.
  170. * Optimized for speed; does not actually add the marker to the map.
  171. * Designed for batch-processing thousands of markers.
  172. *
  173. * @param {Marker} marker The marker to add.
  174. * @param {Number} minZoom The minimum zoom for displaying the marker.
  175. * @param {Number} maxZoom The maximum zoom for displaying the marker.
  176. */</span>
  177. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addMarkerBatch_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Marker</span>, <span class="ActionScriptDefault_Text">minZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  178. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">mPoint</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">marker</span>.<span class="ActionScriptDefault_Text">getLatLng</span><span class="ActionScriptBracket/Brace">()</span>;
  179. <span class="ActionScriptComment">// Tracking markers is expensive, so we do this only if the
  180. </span> <span class="ActionScriptComment">// user explicitly requested it when creating marker manager.
  181. </span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">trackMarkers_</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  182. <span class="ActionScriptDefault_Text">marker</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&quot;changed&quot;</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">onMarkerMoved_</span><span class="ActionScriptBracket/Brace">)</span>;
  183. <span class="ActionScriptBracket/Brace">}</span>
  184. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridPoint</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">mPoint</span>, <span class="ActionScriptDefault_Text">maxZoom</span>, <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span>0, 0<span class="ActionScriptBracket/Brace">))</span>;
  185. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">maxZoom</span>; <span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">&gt;=</span> <span class="ActionScriptDefault_Text">minZoom</span>; <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">--</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  186. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getGridCellCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">gridPoint</span>.<span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">gridPoint</span>.<span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">)</span>;
  187. <span class="ActionScriptDefault_Text">cell</span>.<span class="ActionScriptDefault_Text">push</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  188. <span class="ActionScriptDefault_Text">gridPoint</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">gridPoint</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  189. <span class="ActionScriptDefault_Text">gridPoint</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">gridPoint</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  190. <span class="ActionScriptBracket/Brace">}</span>
  191. <span class="ActionScriptBracket/Brace">}</span>;
  192. <span class="ActionScriptASDoc">/**
  193. * Returns whether or not the given point is visible in the shown bounds. This
  194. * is a helper method that takes care of the corner case, when shownBounds have
  195. * negative minX value.
  196. *
  197. * @param {Point} point a point on a grid.
  198. * @return {Boolean} Whether or not the given point is visible in the currently
  199. * shown bounds.
  200. */</span>
  201. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">isGridPointVisible_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">point</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptBracket/Brace">{</span>
  202. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">vertical</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">minY</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">point</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&amp;&amp;</span>
  203. <span class="ActionScriptDefault_Text">point</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">maxY</span>;
  204. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">minX</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">minX</span>;
  205. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">horizontal</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">minX</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">point</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">point</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">maxX</span>;
  206. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(!</span><span class="ActionScriptDefault_Text">horizontal</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">minX</span> <span class="ActionScriptOperator">&lt;</span> 0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  207. <span class="ActionScriptComment">// Shifts the negative part of the rectangle. As point.x is always less
  208. </span> <span class="ActionScriptComment">// than grid width, only test shifted minX .. 0 part of the shown bounds.
  209. </span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">width</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">gridWidth_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">]</span>;
  210. <span class="ActionScriptDefault_Text">horizontal</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">minX</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">width</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">point</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">point</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">width</span> <span class="ActionScriptOperator">-</span> 1;
  211. <span class="ActionScriptBracket/Brace">}</span>
  212. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">vertical</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">horizontal</span>;
  213. <span class="ActionScriptBracket/Brace">}</span>
  214. <span class="ActionScriptASDoc">/**
  215. * Reacts to a notification from a marker that it has moved to a new location.
  216. * It scans the grid all all zoom levels and moves the marker from the old grid
  217. * location to a new grid location.
  218. *
  219. * @param {Marker} marker The marker that moved.
  220. * @param {LatLng} oldLatLng The old position of the marker.
  221. * @param {LatLng} newLatLng The new position of the marker.
  222. */</span>
  223. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">onMarkerMoved_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Marker</span>, <span class="ActionScriptDefault_Text">oldLatLng</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span>, <span class="ActionScriptDefault_Text">newLatLng</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  224. <span class="ActionScriptComment">// NOTE: We do not know the minimum or maximum zoom the marker was
  225. </span> <span class="ActionScriptComment">// added at, so we start at the absolute maximum. Whenever we successfully
  226. </span> <span class="ActionScriptComment">// remove a marker at a given zoom, we add it at the new grid coordinates.
  227. </span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">maxZoom_</span>;
  228. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">changed</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>;
  229. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">oldGrid</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">oldLatLng</span>, <span class="ActionScriptDefault_Text">zoom</span>, <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span>0, 0<span class="ActionScriptBracket/Brace">))</span>;
  230. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">newGrid</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newLatLng</span>, <span class="ActionScriptDefault_Text">zoom</span>, <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span>0, 0<span class="ActionScriptBracket/Brace">))</span>;
  231. <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">&gt;=</span> 0 <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">||</span> <span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  232. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getGridCellNoCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">)</span>;
  233. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  234. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeFromArray</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">cell</span>, <span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  235. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getGridCellCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">push</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  236. <span class="ActionScriptBracket/Brace">}</span>
  237. <span class="ActionScriptBracket/Brace">}</span>
  238. <span class="ActionScriptComment">// For the current zoom we also need to update the map. Markers that no
  239. </span> <span class="ActionScriptComment">// longer are visible are removed from the map. Markers that moved into
  240. </span> <span class="ActionScriptComment">// the shown bounds are added to the map. This also lets us keep the count
  241. </span> <span class="ActionScriptComment">// of visible markers up to date.
  242. </span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">mapZoom_</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  243. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">isGridPointVisible_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">oldGrid</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  244. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(!</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">isGridPointVisible_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newGrid</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  245. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  246. <span class="ActionScriptDefault_Text">changed</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  247. <span class="ActionScriptBracket/Brace">}</span>
  248. <span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptReserved">else</span> <span class="ActionScriptBracket/Brace">{</span>
  249. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">isGridPointVisible_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newGrid</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  250. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addOverlay_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  251. <span class="ActionScriptDefault_Text">changed</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  252. <span class="ActionScriptBracket/Brace">}</span>
  253. <span class="ActionScriptBracket/Brace">}</span>
  254. <span class="ActionScriptBracket/Brace">}</span>
  255. <span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  256. <span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">oldGrid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  257. <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  258. <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">newGrid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  259. <span class="ActionScriptOperator">--</span><span class="ActionScriptDefault_Text">zoom</span>;
  260. <span class="ActionScriptBracket/Brace">}</span>
  261. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">changed</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  262. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">notifyListeners_</span><span class="ActionScriptBracket/Brace">()</span>;
  263. <span class="ActionScriptBracket/Brace">}</span>
  264. <span class="ActionScriptBracket/Brace">}</span>;
  265. <span class="ActionScriptASDoc">/**
  266. * Searches at every zoom level to find grid cell
  267. * that marker would be in, removes from that array if found.
  268. * Also removes marker with removeOverlay if visible.
  269. * @param {GMarker} marker The marker to delete.
  270. */</span>
  271. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">removeMarker</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Marker</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  272. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">maxZoom_</span>;
  273. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">changed</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>;
  274. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">point</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">marker</span>.<span class="ActionScriptDefault_Text">getLatLng</span><span class="ActionScriptBracket/Brace">()</span>;
  275. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">point</span>, <span class="ActionScriptDefault_Text">zoom</span>, <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span>0, 0<span class="ActionScriptBracket/Brace">))</span>;
  276. <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">&gt;=</span> 0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  277. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getGridCellNoCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">grid</span>.<span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">grid</span>.<span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">)</span>;
  278. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  279. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeFromArray</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">cell</span>, <span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  280. <span class="ActionScriptBracket/Brace">}</span>
  281. <span class="ActionScriptComment">// For the current zoom we also need to update the map. Markers that no
  282. </span> <span class="ActionScriptComment">// longer are visible are removed from the map. This also lets us keep the count
  283. </span> <span class="ActionScriptComment">// of visible markers up to date.
  284. </span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">mapZoom_</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  285. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">isGridPointVisible_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  286. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  287. <span class="ActionScriptDefault_Text">changed</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  288. <span class="ActionScriptBracket/Brace">}</span>
  289. <span class="ActionScriptBracket/Brace">}</span>
  290. <span class="ActionScriptDefault_Text">grid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">grid</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  291. <span class="ActionScriptDefault_Text">grid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">grid</span>.<span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&gt;&gt;</span> 1;
  292. <span class="ActionScriptOperator">--</span><span class="ActionScriptDefault_Text">zoom</span>;
  293. <span class="ActionScriptBracket/Brace">}</span>
  294. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">changed</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  295. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">notifyListeners_</span><span class="ActionScriptBracket/Brace">()</span>;
  296. <span class="ActionScriptBracket/Brace">}</span>
  297. <span class="ActionScriptBracket/Brace">}</span>
  298. <span class="ActionScriptASDoc">/**
  299. * Add many markers at once.
  300. * Does not actually update the map, just the internal grid.
  301. *
  302. * @param {Array of Marker} markers The markers to add.
  303. * @param {Number} minZoom The minimum zoom level to display the markers.
  304. * @param {Number} opt_maxZoom The maximum zoom level to display the markers.
  305. */</span>
  306. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addMarkers</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">markers</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span>, <span class="ActionScriptDefault_Text">minZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">opt_maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Infinity</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  307. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getOptMaxZoom_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">opt_maxZoom</span><span class="ActionScriptBracket/Brace">)</span>;
  308. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">markers</span>.<span class="ActionScriptDefault_Text">length</span> <span class="ActionScriptOperator">-</span> 1; <span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">&gt;=</span> 0; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">--</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  309. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addMarkerBatch_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">markers</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span>, <span class="ActionScriptDefault_Text">minZoom</span>, <span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptBracket/Brace">)</span>;
  310. <span class="ActionScriptBracket/Brace">}</span>
  311. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">numMarkers_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">minZoom</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">markers</span>.<span class="ActionScriptDefault_Text">length</span>;
  312. <span class="ActionScriptBracket/Brace">}</span>
  313. <span class="ActionScriptASDoc">/**
  314. * Returns the value of the optional maximum zoom. This method is defined so
  315. * that we have just one place where optional maximum zoom is calculated.
  316. *
  317. * @param {Number} opt_maxZoom The optinal maximum zoom.
  318. * @return The maximum zoom.
  319. */</span>
  320. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getOptMaxZoom_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">opt_maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptBracket/Brace">{</span>
  321. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">opt_maxZoom</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptDefault_Text">Infinity</span> <span class="ActionScriptOperator">?</span> <span class="ActionScriptDefault_Text">opt_maxZoom</span> <span class="ActionScriptOperator">:</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">maxZoom_</span>;
  322. <span class="ActionScriptBracket/Brace">}</span>
  323. <span class="ActionScriptASDoc">/**
  324. * Calculates the total number of markers potentially visible at a given
  325. * zoom level.
  326. *
  327. * @param {Number} zoom The zoom level to check.
  328. * @return {Number}
  329. */</span>
  330. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getMarkerCount</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptBracket/Brace">{</span>
  331. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">total</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0;
  332. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; <span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">zoom</span>; <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  333. <span class="ActionScriptDefault_Text">total</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">numMarkers_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">]</span>;
  334. <span class="ActionScriptBracket/Brace">}</span>
  335. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">total</span>;
  336. <span class="ActionScriptBracket/Brace">}</span>;
  337. <span class="ActionScriptASDoc">/**
  338. * Add a single marker to the map.
  339. *
  340. * @param {Marker} marker The marker to add.
  341. * @param {Number} minZoom The minimum zoom level to display the marker.
  342. * @param {Number} opt_maxZoom The maximum zoom level to display the marker.
  343. */</span>
  344. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addMarker</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Marker</span>, <span class="ActionScriptDefault_Text">minZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">opt_maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  345. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getOptMaxZoom_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">opt_maxZoom</span><span class="ActionScriptBracket/Brace">)</span>;
  346. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addMarkerBatch_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span>, <span class="ActionScriptDefault_Text">minZoom</span>, <span class="ActionScriptDefault_Text">maxZoom</span><span class="ActionScriptBracket/Brace">)</span>;
  347. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridPoint</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span>.<span class="ActionScriptDefault_Text">getLatLng</span><span class="ActionScriptBracket/Brace">()</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">mapZoom_</span>, <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span>0, 0<span class="ActionScriptBracket/Brace">))</span>;
  348. <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">isGridPointVisible_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">gridPoint</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">&amp;&amp;</span>
  349. <span class="ActionScriptDefault_Text">minZoom</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">&amp;&amp;</span>
  350. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">maxZoom</span> <span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  351. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addOverlay_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">marker</span><span class="ActionScriptBracket/Brace">)</span>;
  352. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">notifyListeners_</span><span class="ActionScriptBracket/Brace">()</span>;
  353. <span class="ActionScriptBracket/Brace">}</span>
  354. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">numMarkers_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">minZoom</span><span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptOperator">++</span>;
  355. <span class="ActionScriptBracket/Brace">}</span>;
  356. <span class="ActionScriptASDoc">/**
  357. * Get a cell in the grid, creating it first if necessary.
  358. *
  359. * Optimization candidate
  360. *
  361. * @param {Number} x The x coordinate of the cell.
  362. * @param {Number} y The y coordinate of the cell.
  363. * @param {Number} z The z coordinate of the cell.
  364. * @return {Array} The cell in the array.
  365. */</span>
  366. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getGridCellCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptBracket/Brace">{</span>
  367. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">grid_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">]</span>;
  368. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;</span> 0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  369. <span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">gridWidth_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">]</span>;
  370. <span class="ActionScriptBracket/Brace">}</span>
  371. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptBracket/Brace">]</span>;
  372. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(!</span><span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  373. <span class="ActionScriptDefault_Text">gridCol</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[]</span>;
  374. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[]</span>;
  375. <span class="ActionScriptBracket/Brace">}</span>
  376. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridCell</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">]</span>;
  377. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(!</span><span class="ActionScriptDefault_Text">gridCell</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  378. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[]</span>;
  379. <span class="ActionScriptBracket/Brace">}</span>
  380. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">gridCell</span>;
  381. <span class="ActionScriptBracket/Brace">}</span>
  382. <span class="ActionScriptASDoc">/**
  383. * Get a cell in the grid, returning undefined if it does not exist.
  384. *
  385. * NOTE: Optimized for speed -- otherwise could combine with getGridCellCreate_.
  386. *
  387. * @param {Number} x The x coordinate of the cell.
  388. * @param {Number} y The y coordinate of the cell.
  389. * @param {Number} z The z coordinate of the cell.
  390. * @return {Array} The cell in the array.
  391. */</span>
  392. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getGridCellNoCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptBracket/Brace">{</span>
  393. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">grid_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">]</span>;
  394. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;</span> 0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  395. <span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">gridWidth_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">]</span>;
  396. <span class="ActionScriptBracket/Brace">}</span>
  397. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">grid</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptBracket/Brace">]</span>;
  398. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">gridCol</span> <span class="ActionScriptOperator">?</span> <span class="ActionScriptDefault_Text">gridCol</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">:</span> <span class="ActionScriptReserved">undefined</span>;
  399. <span class="ActionScriptBracket/Brace">}</span>;
  400. <span class="ActionScriptASDoc">/**
  401. * Turns at geographical bounds into a grid-space bounds.
  402. *
  403. * @param {LatLngBounds} bounds The geographical bounds.
  404. * @param {Number} zoom The zoom level of the bounds.
  405. * @param {GSize} swPadding The padding in pixels to extend beyond the
  406. * given bounds.
  407. * @param {GSize} nePadding The padding in pixels to extend beyond the
  408. * given bounds.
  409. * @return {GBounds} The bounds in grid space.
  410. */</span>
  411. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getGridBounds_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bounds</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLngBounds</span>, <span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">swPadding</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span>, <span class="ActionScriptDefault_Text">nePadding</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span> <span class="ActionScriptBracket/Brace">{</span>
  412. <span class="ActionScriptDefault_Text">zoom</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">min</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">zoom</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">maxZoom_</span><span class="ActionScriptBracket/Brace">)</span>;
  413. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bl</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">getSouthWest</span><span class="ActionScriptBracket/Brace">()</span>;
  414. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">tr</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LatLng</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">getNorthEast</span><span class="ActionScriptBracket/Brace">()</span>;
  415. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">sw</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bl</span>, <span class="ActionScriptDefault_Text">zoom</span>, <span class="ActionScriptDefault_Text">swPadding</span><span class="ActionScriptBracket/Brace">)</span>;
  416. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">ne</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getTilePoint_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tr</span>, <span class="ActionScriptDefault_Text">zoom</span>, <span class="ActionScriptDefault_Text">nePadding</span><span class="ActionScriptBracket/Brace">)</span>;
  417. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gw</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">gridWidth_</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">zoom</span><span class="ActionScriptBracket/Brace">]</span>;
  418. <span class="ActionScriptComment">// Crossing the prime meridian requires correction of bounds.
  419. </span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tr</span>.<span class="ActionScriptDefault_Text">lng</span><span class="ActionScriptBracket/Brace">()</span> <span class="ActionScriptOperator">&lt;</span> <span class="ActionScriptDefault_Text">bl</span>.<span class="ActionScriptDefault_Text">lng</span><span class="ActionScriptBracket/Brace">()</span> <span class="ActionScriptOperator">||</span> <span class="ActionScriptDefault_Text">ne</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;</span> <span class="ActionScriptDefault_Text">sw</span>.<span class="ActionScriptDefault_Text">x</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  420. <span class="ActionScriptDefault_Text">sw</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">gw</span>;
  421. <span class="ActionScriptBracket/Brace">}</span>
  422. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">ne</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">sw</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+</span> 1 <span class="ActionScriptOperator">&gt;=</span> <span class="ActionScriptDefault_Text">gw</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  423. <span class="ActionScriptComment">// Computed grid bounds are larger than the world; truncate.
  424. </span> <span class="ActionScriptDefault_Text">sw</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> 0;
  425. <span class="ActionScriptDefault_Text">ne</span>.<span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">gw</span> <span class="ActionScriptOperator">-</span> 1;
  426. <span class="ActionScriptBracket/Brace">}</span>
  427. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gridBounds</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">GridBounds</span><span class="ActionScriptBracket/Brace">([</span><span class="ActionScriptDefault_Text">sw</span>, <span class="ActionScriptDefault_Text">ne</span><span class="ActionScriptBracket/Brace">])</span>;
  428. <span class="ActionScriptDefault_Text">gridBounds</span>.<span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">zoom</span>;
  429. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">gridBounds</span>;
  430. <span class="ActionScriptBracket/Brace">}</span>
  431. <span class="ActionScriptASDoc">/**
  432. * Gets the grid-space bounds for the current map viewport.
  433. *
  434. * @return {Bounds} The bounds in grid space.
  435. */</span>
  436. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getMapGridBounds_</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span> <span class="ActionScriptBracket/Brace">{</span>
  437. <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getGridBounds_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">map_</span>.<span class="ActionScriptDefault_Text">getLatLngBounds</span><span class="ActionScriptBracket/Brace">()</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">mapZoom_</span>,
  438. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">swPadding_</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">nePadding_</span><span class="ActionScriptBracket/Brace">)</span>;
  439. <span class="ActionScriptBracket/Brace">}</span>
  440. <span class="ActionScriptASDoc">/**
  441. * Event listener for map:movend.
  442. * NOTE: Use a timeout so that the user is not blocked
  443. * from moving the map.
  444. *
  445. */</span>
  446. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">onMapMoveEnd_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">MapMoveEvent</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  447. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">updateMarkers_</span><span class="ActionScriptBracket/Brace">()</span>;
  448. <span class="ActionScriptComment">//this.objectSetTimeout_(this, this.updateMarkers_, 0);
  449. </span><span class="ActionScriptBracket/Brace">}</span>
  450. <span class="ActionScriptASDoc">/**
  451. * Call a function or evaluate an expression after a specified number of
  452. * milliseconds.
  453. *
  454. * Equivalent to the standard window.setTimeout function, but the given
  455. * function executes as a method of this instance. So the function passed to
  456. * objectSetTimeout can contain references to this.
  457. * objectSetTimeout(this, function() { alert(this.x) }, 1000);
  458. *
  459. * @param {Object} object The target object.
  460. * @param {Function} command The command to run.
  461. * @param {Number} milliseconds The delay.
  462. * @return {Boolean} Success.
  463. */</span>
  464. <span class="ActionScriptComment">/*
  465. MarkerManager.prototype.objectSetTimeout_ = function(object, command, milliseconds) {
  466. return window.setTimeout(function() {
  467. command.call(object);
  468. }, milliseconds);
  469. };
  470. */</span>
  471. <span class="ActionScriptASDoc">/**
  472. * Refresh forces the marker-manager into a good state.
  473. * If never before initialized, shows all the markers.
  474. * If previously initialized, removes and re-adds all markers.
  475. */</span>
  476. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">refresh</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  477. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownMarkers_</span> <span class="ActionScriptOperator">&gt;</span> 0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  478. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processAll_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  479. <span class="ActionScriptBracket/Brace">}</span>
  480. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processAll_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  481. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">notifyListeners_</span><span class="ActionScriptBracket/Brace">()</span>;
  482. <span class="ActionScriptBracket/Brace">}</span>;
  483. <span class="ActionScriptASDoc">/**
  484. * After the viewport may have changed, add or remove markers as needed.
  485. */</span>
  486. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">updateMarkers_</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  487. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">mapZoom_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">map_</span>.<span class="ActionScriptDefault_Text">getZoom</span><span class="ActionScriptBracket/Brace">()</span>;
  488. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">newBounds</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getMapGridBounds_</span><span class="ActionScriptBracket/Brace">()</span>;
  489. <span class="ActionScriptComment">// If the move does not include new grid sections,
  490. </span> <span class="ActionScriptComment">// we have no work to do:
  491. </span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newBounds</span>.<span class="ActionScriptDefault_Text">equals</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">newBounds</span>.<span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  492. <span class="ActionScriptReserved">return</span>;
  493. <span class="ActionScriptBracket/Brace">}</span>
  494. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newBounds</span>.<span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>.<span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  495. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processAll_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  496. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processAll_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newBounds</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  497. <span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptReserved">else</span> <span class="ActionScriptBracket/Brace">{</span>
  498. <span class="ActionScriptComment">// Remove markers:
  499. </span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">rectangleDiff_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>, <span class="ActionScriptDefault_Text">newBounds</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeCellMarkers_</span><span class="ActionScriptBracket/Brace">)</span>;
  500. <span class="ActionScriptComment">// Add markers:
  501. </span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">rectangleDiff_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">newBounds</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addCellMarkers_</span><span class="ActionScriptBracket/Brace">)</span>;
  502. <span class="ActionScriptBracket/Brace">}</span>
  503. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">shownBounds_</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">newBounds</span>;
  504. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">notifyListeners_</span><span class="ActionScriptBracket/Brace">()</span>;
  505. <span class="ActionScriptBracket/Brace">}</span>;
  506. <span class="ActionScriptASDoc">/**
  507. * Notify listeners when the state of what is displayed changes.
  508. */</span>
  509. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">notifyListeners_</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  510. <span class="ActionScriptComment">//this.dispatchEvent(new Event(&quot;changed&quot;), this.shownBounds_, this.shownMarkers_);
  511. </span><span class="ActionScriptBracket/Brace">}</span>
  512. <span class="ActionScriptASDoc">/**
  513. * Process all markers in the bounds provided, using a callback.
  514. *
  515. * @param {Bounds} bounds The bounds in grid space.
  516. * @param {Function} callback The function to call for each marker.
  517. */</span>
  518. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">processAll_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bounds</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Function</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  519. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">minX</span>; <span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">maxX</span>; <span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  520. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">minY</span>; <span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">maxY</span>; <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  521. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processCellMarkers_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">bounds</span>.<span class="ActionScriptDefault_Text">z</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">)</span>;
  522. <span class="ActionScriptBracket/Brace">}</span>
  523. <span class="ActionScriptBracket/Brace">}</span>
  524. <span class="ActionScriptBracket/Brace">}</span>
  525. <span class="ActionScriptASDoc">/**
  526. * Process all markers in the grid cell, using a callback.
  527. *
  528. * @param {Number} x The x coordinate of the cell.
  529. * @param {Number} y The y coordinate of the cell.
  530. * @param {Number} z The z coordinate of the cell.
  531. * @param {Function} callback The function to call for each marker.
  532. */</span>
  533. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">processCellMarkers_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Function</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  534. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">getGridCellNoCreate_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">)</span>;
  535. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  536. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">cell</span>.<span class="ActionScriptDefault_Text">length</span> <span class="ActionScriptOperator">-</span> 1; <span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">&gt;=</span> 0; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">--</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  537. <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">cell</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">])</span>;
  538. <span class="ActionScriptBracket/Brace">}</span>
  539. <span class="ActionScriptBracket/Brace">}</span>
  540. <span class="ActionScriptBracket/Brace">}</span>;
  541. <span class="ActionScriptASDoc">/**
  542. * Remove all markers in a grid cell.
  543. *
  544. * @param {Number} x The x coordinate of the cell.
  545. * @param {Number} y The y coordinate of the cell.
  546. * @param {Number} z The z coordinate of the cell.
  547. */</span>
  548. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">removeCellMarkers_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  549. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processCellMarkers_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">z</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">removeOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  550. <span class="ActionScriptBracket/Brace">}</span>;
  551. <span class="ActionScriptASDoc">/**
  552. * Add all markers in a grid cell.
  553. *
  554. * @param {Number} x The x coordinate of the cell.
  555. * @param {Number} y The y coordinate of the cell.
  556. * @param {Number} z The z coordinate of the cell.
  557. */</span>
  558. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addCellMarkers_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  559. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">processCellMarkers_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">z</span>, <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">addOverlay_</span><span class="ActionScriptBracket/Brace">)</span>;
  560. <span class="ActionScriptBracket/Brace">}</span>;
  561. <span class="ActionScriptASDoc">/**
  562. * Use the rectangleDiffCoords function to process all grid cells
  563. * that are in bounds1 but not bounds2, using a callback, and using
  564. * the current MarkerManager object as the instance.
  565. *
  566. * Pass the z parameter to the callback in addition to x and y.
  567. *
  568. * @param {Bounds} bounds1 The bounds of all points we may process.
  569. * @param {Bounds} bounds2 The bounds of points to exclude.
  570. * @param {Function} callback The callback function to call
  571. * for each grid coordinate (x, y, z).
  572. */</span>
  573. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">rectangleDiff_</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bounds1</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span>, <span class="ActionScriptDefault_Text">bounds2</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Function</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  574. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">me</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">MarkerManager</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span>;
  575. <span class="ActionScriptReserved">this</span>.<span class="ActionScriptDefault_Text">rectangleDiffCoords</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bounds1</span>, <span class="ActionScriptDefault_Text">bounds2</span>, <span class="ActionScriptfunction">function</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  576. <span class="ActionScriptDefault_Text">callback</span>.<span class="ActionScriptDefault_Text">apply</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">me</span>, <span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span>, <span class="ActionScriptDefault_Text">bounds1</span>.<span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">])</span>;
  577. <span class="ActionScriptBracket/Brace">})</span>;
  578. <span class="ActionScriptBracket/Brace">}</span>;
  579. <span class="ActionScriptASDoc">/**
  580. * Calls the function for all points in bounds1, not in bounds2
  581. *
  582. * @param {Bounds} bounds1 The bounds of all points we may process.
  583. * @param {Bounds} bounds2 The bounds of points to exclude.
  584. * @param {Function} callback The callback function to call
  585. * for each grid coordinate.
  586. */</span>
  587. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">rectangleDiffCoords</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bounds1</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span>, <span class="ActionScriptDefault_Text">bounds2</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">GridBounds</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Function</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
  588. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">minX1</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds1</span>.<span class="ActionScriptDefault_Text">minX</span>;
  589. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">minY1</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds1</span>.<span class="ActionScriptDefault_Text">minY</span>;
  590. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxX1</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds1</span>.<span class="ActionScriptDefault_Text">maxX</span>;
  591. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxY1</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds1</span>.<span class="ActionScriptDefault_Text">maxY</span>;
  592. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">minX2</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds2</span>.<span class="ActionScriptDefault_Text">minX</span>;
  593. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">minY2</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds2</span>.<span class="ActionScriptDefault_Text">minY</span>;
  594. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxX2</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds2</span>.<span class="ActionScriptDefault_Text">maxX</span>;
  595. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxY2</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds2</span>.<span class="ActionScriptDefault_Text">maxY</span>;
  596. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span>;
  597. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span>;
  598. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">minX1</span>; <span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">maxX1</span>; <span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span> <span class="ActionScriptComment">// All x in R1
  599. </span> <span class="ActionScriptComment">// All above:
  600. </span> <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">minY1</span>; <span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">maxY1</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&lt;</span> <span class="ActionScriptDefault_Text">minY2</span>; <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span> <span class="ActionScriptComment">// y in R1 above R2
  601. </span> <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span>;
  602. <span class="ActionScriptBracket/Brace">}</span>
  603. <span class="ActionScriptComment">// All below:
  604. </span> <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">max</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxY2</span> <span class="ActionScriptOperator">+</span> 1, <span class="ActionScriptDefault_Text">minY1</span><span class="ActionScriptBracket/Brace">)</span>; <span class="ActionScriptComment">// y in R1 below R2
  605. </span> <span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">maxY1</span>; <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  606. <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span>;
  607. <span class="ActionScriptBracket/Brace">}</span>
  608. <span class="ActionScriptBracket/Brace">}</span>
  609. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">max</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">minY1</span>, <span class="ActionScriptDefault_Text">minY2</span><span class="ActionScriptBracket/Brace">)</span>;
  610. <span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">min</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxY1</span>, <span class="ActionScriptDefault_Text">maxY2</span><span class="ActionScriptBracket/Brace">)</span>; <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span> <span class="ActionScriptComment">// All y in R2 and in R1
  611. </span> <span class="ActionScriptComment">// Strictly left:
  612. </span> <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">min</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxX1</span> <span class="ActionScriptOperator">+</span> 1, <span class="ActionScriptDefault_Text">minX2</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">-</span> 1;
  613. <span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&gt;=</span> <span class="ActionScriptDefault_Text">minX1</span>; <span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">--</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span> <span class="ActionScriptComment">// x in R1 left of R2
  614. </span> <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span>;
  615. <span class="ActionScriptBracket/Brace">}</span>
  616. <span class="ActionScriptComment">// Strictly right:
  617. </span> <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">max</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">minX1</span>, <span class="ActionScriptDefault_Text">maxX2</span> <span class="ActionScriptOperator">+</span> 1<span class="ActionScriptBracket/Brace">)</span>; <span class="ActionScriptComment">// x in R1 right of R2
  618. </span> <span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">&lt;=</span> <span class="ActionScriptDefault_Text">maxX1</span>; <span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  619. <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">x</span>, <span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span>;
  620. <span class="ActionScriptBracket/Brace">}</span>
  621. <span class="ActionScriptBracket/Brace">}</span>
  622. <span class="ActionScriptBracket/Brace">}</span>
  623. <span class="ActionScriptASDoc">/**
  624. * Removes value from array. O(N).
  625. *
  626. * @param {Array} array The array to modify.
  627. * @param {any} value The value to remove.
  628. * @param {Boolean} opt_notype Flag to disable type checking in equality.
  629. * @return {Number} The number of instances of value that were removed.
  630. */</span>
  631. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">removeFromArray</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">array</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span>, <span class="ActionScriptDefault_Text">value</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Object</span>, <span class="ActionScriptDefault_Text">opt_notype</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptBracket/Brace">{</span>
  632. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">shift</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
  633. <span class="ActionScriptReserved">for</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0; <span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">&lt;</span> <span class="ActionScriptDefault_Text">array</span>.<span class="ActionScriptDefault_Text">length</span>; <span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  634. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">array</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">===</span> <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">||</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">opt_notype</span> <span class="ActionScriptOperator">&amp;&amp;</span> <span class="ActionScriptDefault_Text">array</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptDefault_Text">value</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
  635. <span class="ActionScriptDefault_Text">array</span>.<span class="ActionScriptDefault_Text">splice</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">--</span>, 1<span class="ActionScriptBracket/Brace">)</span>;
  636. <span class="ActionScriptDefault_Text">shift</span><span class="ActionScriptOperator">++</span>;
  637. <span class="ActionScriptBracket/Brace">}</span>
  638. <span class="ActionScriptBracket/Brace">}</span>
  639. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">shift</span>;
  640. <span class="ActionScriptBracket/Brace">}</span>
  641. <span class="ActionScriptBracket/Brace">}</span>
  642. <span class="ActionScriptBracket/Brace">}</span>
  643. </pre></body>
  644. </html>