sbf 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (369) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +21 -0
  5. data/app/assets/javascripts/application.js +15 -0
  6. data/app/assets/javascripts/map.js +665 -0
  7. data/app/assets/javascripts/onemap.js +1928 -0
  8. data/app/assets/javascripts/units.js.coffee +3 -0
  9. data/app/assets/stylesheets/application.css +13 -0
  10. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
  11. data/app/assets/stylesheets/scaffolds.css.scss +69 -0
  12. data/app/assets/stylesheets/units.css.scss +3 -0
  13. data/app/controllers/application_controller.rb +5 -0
  14. data/app/controllers/buses_controller.rb +5 -0
  15. data/app/controllers/units_controller.rb +74 -0
  16. data/app/helpers/application_helper.rb +2 -0
  17. data/app/helpers/units_helper.rb +2 -0
  18. data/app/models/ability.rb +39 -0
  19. data/app/models/block.rb +163 -0
  20. data/app/models/estate.rb +70 -0
  21. data/app/models/quota.rb +80 -0
  22. data/app/models/settings.rb +4 -0
  23. data/app/models/unit.rb +121 -0
  24. data/app/views/blocks/_map.html.erb +37 -0
  25. data/app/views/kaminari/twitter-bootstrap/_first_page.html.haml +8 -0
  26. data/app/views/kaminari/twitter-bootstrap/_last_page.html.haml +8 -0
  27. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +19 -0
  28. data/app/views/layouts/application.html.erb +14 -0
  29. data/app/views/layouts/rails_admin/application.html.haml +31 -0
  30. data/app/views/units/_form.html.erb +37 -0
  31. data/app/views/units/edit.html.erb +6 -0
  32. data/app/views/units/index.html.erb +30 -0
  33. data/app/views/units/index.json.jbuilder +4 -0
  34. data/app/views/units/new.html.erb +5 -0
  35. data/app/views/units/show.html.erb +29 -0
  36. data/app/views/units/show.json.jbuilder +1 -0
  37. data/config/initializers/rails_admin.rb +203 -0
  38. data/config/routes.rb +3 -0
  39. data/db/migrate/20130721172422_create_blocks.rb +17 -0
  40. data/db/migrate/20130721173925_create_units.rb +16 -0
  41. data/db/migrate/20130721205526_create_estates.rb +12 -0
  42. data/db/migrate/20130722004104_add_estate_id_to_block.rb +5 -0
  43. data/db/migrate/20130722004318_update_estate_id_for_blocks.rb +13 -0
  44. data/db/migrate/20130722010900_remove_estate_from_blocks.rb +5 -0
  45. data/db/migrate/20130722105351_fix_numeric_columns.rb +39 -0
  46. data/db/migrate/20130910145656_create_quota.rb +16 -0
  47. data/db/migrate/20130910151554_populate_quota_table.rb +35 -0
  48. data/db/migrate/20130912181314_remove_ethnic_quota_from_blocks.rb +5 -0
  49. data/db/schema.rb +68 -0
  50. data/lib/kml/busstops-kml-105.kml +156 -0
  51. data/lib/kml/busstops-kml-106.kml +368 -0
  52. data/lib/kml/busstops-kml-108.kml +156 -0
  53. data/lib/kml/busstops-kml-135.kml +181 -0
  54. data/lib/kml/busstops-kml-136.kml +792 -0
  55. data/lib/kml/busstops-kml-137.kml +675 -0
  56. data/lib/kml/busstops-kml-138.kml +634 -0
  57. data/lib/kml/busstops-kml-139.kml +323 -0
  58. data/lib/kml/busstops-kml-140.kml +156 -0
  59. data/lib/kml/busstops-kml-165.kml +207 -0
  60. data/lib/kml/busstops-kml-166.kml +622 -0
  61. data/lib/kml/busstops-kml-167.kml +554 -0
  62. data/lib/kml/busstops-kml-168.kml +840 -0
  63. data/lib/kml/busstops-kml-169.kml +1401 -0
  64. data/lib/kml/busstops-kml-170.kml +1171 -0
  65. data/lib/kml/busstops-kml-171.kml +225 -0
  66. data/lib/kml/busstops-kml-187.kml +225 -0
  67. data/lib/kml/busstops-kml-188.kml +179 -0
  68. data/lib/kml/busstops-kml-196.kml +646 -0
  69. data/lib/kml/busstops-kml-197.kml +662 -0
  70. data/lib/kml/busstops-kml-198.kml +1005 -0
  71. data/lib/kml/busstops-kml-199.kml +1052 -0
  72. data/lib/kml/busstops-kml-200.kml +1331 -0
  73. data/lib/kml/busstops-kml-201.kml +1351 -0
  74. data/lib/kml/busstops-kml-218.kml +248 -0
  75. data/lib/kml/busstops-kml-219.kml +179 -0
  76. data/lib/kml/busstops-kml-220.kml +248 -0
  77. data/lib/kml/busstops-kml-221.kml +225 -0
  78. data/lib/kml/busstops-kml-225.kml +179 -0
  79. data/lib/kml/busstops-kml-226.kml +363 -0
  80. data/lib/kml/busstops-kml-227.kml +849 -0
  81. data/lib/kml/busstops-kml-228.kml +1015 -0
  82. data/lib/kml/busstops-kml-229.kml +759 -0
  83. data/lib/kml/busstops-kml-230.kml +557 -0
  84. data/lib/kml/busstops-kml-231.kml +998 -0
  85. data/lib/kml/busstops-kml-232.kml +2153 -0
  86. data/lib/kml/busstops-kml-233.kml +498 -0
  87. data/lib/kml/busstops-kml-234.kml +502 -0
  88. data/lib/kml/busstops-kml-235.kml +249 -0
  89. data/lib/kml/busstops-kml-249.kml +248 -0
  90. data/lib/kml/busstops-kml-250.kml +179 -0
  91. data/lib/kml/busstops-kml-251.kml +455 -0
  92. data/lib/kml/busstops-kml-252.kml +409 -0
  93. data/lib/kml/busstops-kml-253.kml +570 -0
  94. data/lib/kml/busstops-kml-254.kml +202 -0
  95. data/lib/kml/busstops-kml-256.kml +363 -0
  96. data/lib/kml/busstops-kml-257.kml +536 -0
  97. data/lib/kml/busstops-kml-258.kml +515 -0
  98. data/lib/kml/busstops-kml-259.kml +774 -0
  99. data/lib/kml/busstops-kml-260.kml +536 -0
  100. data/lib/kml/busstops-kml-261.kml +738 -0
  101. data/lib/kml/busstops-kml-262.kml +783 -0
  102. data/lib/kml/busstops-kml-263.kml +1044 -0
  103. data/lib/kml/busstops-kml-264.kml +543 -0
  104. data/lib/kml/busstops-kml-265.kml +624 -0
  105. data/lib/kml/busstops-kml-266.kml +934 -0
  106. data/lib/kml/busstops-kml-267.kml +883 -0
  107. data/lib/kml/busstops-kml-268.kml +187 -0
  108. data/lib/kml/busstops-kml-280.kml +271 -0
  109. data/lib/kml/busstops-kml-281.kml +248 -0
  110. data/lib/kml/busstops-kml-282.kml +639 -0
  111. data/lib/kml/busstops-kml-283.kml +501 -0
  112. data/lib/kml/busstops-kml-284.kml +432 -0
  113. data/lib/kml/busstops-kml-285.kml +432 -0
  114. data/lib/kml/busstops-kml-286.kml +363 -0
  115. data/lib/kml/busstops-kml-287.kml +272 -0
  116. data/lib/kml/busstops-kml-288.kml +792 -0
  117. data/lib/kml/busstops-kml-289.kml +801 -0
  118. data/lib/kml/busstops-kml-290.kml +673 -0
  119. data/lib/kml/busstops-kml-291.kml +474 -0
  120. data/lib/kml/busstops-kml-292.kml +256 -0
  121. data/lib/kml/busstops-kml-293.kml +748 -0
  122. data/lib/kml/busstops-kml-294.kml +999 -0
  123. data/lib/kml/busstops-kml-295.kml +769 -0
  124. data/lib/kml/busstops-kml-296.kml +1051 -0
  125. data/lib/kml/busstops-kml-297.kml +904 -0
  126. data/lib/kml/busstops-kml-298.kml +731 -0
  127. data/lib/kml/busstops-kml-299.kml +644 -0
  128. data/lib/kml/busstops-kml-300.kml +274 -0
  129. data/lib/kml/busstops-kml-302.kml +156 -0
  130. data/lib/kml/busstops-kml-311.kml +179 -0
  131. data/lib/kml/busstops-kml-312.kml +455 -0
  132. data/lib/kml/busstops-kml-313.kml +639 -0
  133. data/lib/kml/busstops-kml-314.kml +639 -0
  134. data/lib/kml/busstops-kml-315.kml +708 -0
  135. data/lib/kml/busstops-kml-316.kml +394 -0
  136. data/lib/kml/busstops-kml-317.kml +363 -0
  137. data/lib/kml/busstops-kml-318.kml +830 -0
  138. data/lib/kml/busstops-kml-319.kml +370 -0
  139. data/lib/kml/busstops-kml-320.kml +560 -0
  140. data/lib/kml/busstops-kml-321.kml +432 -0
  141. data/lib/kml/busstops-kml-322.kml +365 -0
  142. data/lib/kml/busstops-kml-323.kml +529 -0
  143. data/lib/kml/busstops-kml-324.kml +549 -0
  144. data/lib/kml/busstops-kml-325.kml +717 -0
  145. data/lib/kml/busstops-kml-326.kml +645 -0
  146. data/lib/kml/busstops-kml-327.kml +908 -0
  147. data/lib/kml/busstops-kml-328.kml +467 -0
  148. data/lib/kml/busstops-kml-329.kml +876 -0
  149. data/lib/kml/busstops-kml-330.kml +795 -0
  150. data/lib/kml/busstops-kml-331.kml +442 -0
  151. data/lib/kml/busstops-kml-342.kml +271 -0
  152. data/lib/kml/busstops-kml-343.kml +547 -0
  153. data/lib/kml/busstops-kml-344.kml +317 -0
  154. data/lib/kml/busstops-kml-345.kml +557 -0
  155. data/lib/kml/busstops-kml-346.kml +777 -0
  156. data/lib/kml/busstops-kml-347.kml +777 -0
  157. data/lib/kml/busstops-kml-348.kml +762 -0
  158. data/lib/kml/busstops-kml-349.kml +668 -0
  159. data/lib/kml/busstops-kml-350.kml +366 -0
  160. data/lib/kml/busstops-kml-351.kml +301 -0
  161. data/lib/kml/busstops-kml-352.kml +367 -0
  162. data/lib/kml/busstops-kml-353.kml +271 -0
  163. data/lib/kml/busstops-kml-354.kml +225 -0
  164. data/lib/kml/busstops-kml-355.kml +611 -0
  165. data/lib/kml/busstops-kml-356.kml +842 -0
  166. data/lib/kml/busstops-kml-357.kml +838 -0
  167. data/lib/kml/busstops-kml-358.kml +808 -0
  168. data/lib/kml/busstops-kml-359.kml +786 -0
  169. data/lib/kml/busstops-kml-360.kml +680 -0
  170. data/lib/kml/busstops-kml-361.kml +785 -0
  171. data/lib/kml/busstops-kml-362.kml +815 -0
  172. data/lib/kml/busstops-kml-363.kml +389 -0
  173. data/lib/kml/busstops-kml-374.kml +432 -0
  174. data/lib/kml/busstops-kml-376.kml +205 -0
  175. data/lib/kml/busstops-kml-377.kml +889 -0
  176. data/lib/kml/busstops-kml-378.kml +936 -0
  177. data/lib/kml/busstops-kml-379.kml +577 -0
  178. data/lib/kml/busstops-kml-380.kml +794 -0
  179. data/lib/kml/busstops-kml-381.kml +619 -0
  180. data/lib/kml/busstops-kml-382.kml +716 -0
  181. data/lib/kml/busstops-kml-383.kml +204 -0
  182. data/lib/kml/busstops-kml-385.kml +271 -0
  183. data/lib/kml/busstops-kml-386.kml +795 -0
  184. data/lib/kml/busstops-kml-387.kml +875 -0
  185. data/lib/kml/busstops-kml-388.kml +598 -0
  186. data/lib/kml/busstops-kml-389.kml +648 -0
  187. data/lib/kml/busstops-kml-390.kml +297 -0
  188. data/lib/kml/busstops-kml-391.kml +519 -0
  189. data/lib/kml/busstops-kml-392.kml +426 -0
  190. data/lib/kml/busstops-kml-393.kml +959 -0
  191. data/lib/kml/busstops-kml-394.kml +250 -0
  192. data/lib/kml/busstops-kml-395.kml +187 -0
  193. data/lib/kml/busstops-kml-405.kml +248 -0
  194. data/lib/kml/busstops-kml-407.kml +277 -0
  195. data/lib/kml/busstops-kml-408.kml +670 -0
  196. data/lib/kml/busstops-kml-409.kml +1094 -0
  197. data/lib/kml/busstops-kml-410.kml +1009 -0
  198. data/lib/kml/busstops-kml-411.kml +880 -0
  199. data/lib/kml/busstops-kml-412.kml +988 -0
  200. data/lib/kml/busstops-kml-413.kml +396 -0
  201. data/lib/kml/busstops-kml-417.kml +615 -0
  202. data/lib/kml/busstops-kml-418.kml +869 -0
  203. data/lib/kml/busstops-kml-419.kml +1174 -0
  204. data/lib/kml/busstops-kml-420.kml +463 -0
  205. data/lib/kml/busstops-kml-421.kml +253 -0
  206. data/lib/kml/busstops-kml-422.kml +180 -0
  207. data/lib/kml/busstops-kml-423.kml +865 -0
  208. data/lib/kml/busstops-kml-424.kml +664 -0
  209. data/lib/kml/busstops-kml-425.kml +457 -0
  210. data/lib/kml/busstops-kml-426.kml +179 -0
  211. data/lib/kml/busstops-kml-438.kml +157 -0
  212. data/lib/kml/busstops-kml-439.kml +388 -0
  213. data/lib/kml/busstops-kml-440.kml +248 -0
  214. data/lib/kml/busstops-kml-441.kml +409 -0
  215. data/lib/kml/busstops-kml-442.kml +411 -0
  216. data/lib/kml/busstops-kml-443.kml +795 -0
  217. data/lib/kml/busstops-kml-444.kml +321 -0
  218. data/lib/kml/busstops-kml-447.kml +226 -0
  219. data/lib/kml/busstops-kml-448.kml +668 -0
  220. data/lib/kml/busstops-kml-449.kml +508 -0
  221. data/lib/kml/busstops-kml-450.kml +796 -0
  222. data/lib/kml/busstops-kml-451.kml +783 -0
  223. data/lib/kml/busstops-kml-452.kml +157 -0
  224. data/lib/kml/busstops-kml-454.kml +670 -0
  225. data/lib/kml/busstops-kml-455.kml +1211 -0
  226. data/lib/kml/busstops-kml-456.kml +496 -0
  227. data/lib/kml/busstops-kml-457.kml +220 -0
  228. data/lib/kml/busstops-kml-470.kml +248 -0
  229. data/lib/kml/busstops-kml-473.kml +434 -0
  230. data/lib/kml/busstops-kml-474.kml +433 -0
  231. data/lib/kml/busstops-kml-475.kml +405 -0
  232. data/lib/kml/busstops-kml-478.kml +271 -0
  233. data/lib/kml/busstops-kml-479.kml +780 -0
  234. data/lib/kml/busstops-kml-480.kml +604 -0
  235. data/lib/kml/busstops-kml-481.kml +676 -0
  236. data/lib/kml/busstops-kml-482.kml +603 -0
  237. data/lib/kml/busstops-kml-483.kml +501 -0
  238. data/lib/kml/busstops-kml-484.kml +179 -0
  239. data/lib/kml/busstops-kml-485.kml +317 -0
  240. data/lib/kml/busstops-kml-486.kml +460 -0
  241. data/lib/kml/busstops-kml-487.kml +887 -0
  242. data/lib/kml/busstops-kml-488.kml +210 -0
  243. data/lib/kml/busstops-kml-501.kml +455 -0
  244. data/lib/kml/busstops-kml-502.kml +317 -0
  245. data/lib/kml/busstops-kml-503.kml +317 -0
  246. data/lib/kml/busstops-kml-504.kml +411 -0
  247. data/lib/kml/busstops-kml-505.kml +461 -0
  248. data/lib/kml/busstops-kml-506.kml +544 -0
  249. data/lib/kml/busstops-kml-509.kml +256 -0
  250. data/lib/kml/busstops-kml-510.kml +869 -0
  251. data/lib/kml/busstops-kml-511.kml +1146 -0
  252. data/lib/kml/busstops-kml-512.kml +963 -0
  253. data/lib/kml/busstops-kml-513.kml +1307 -0
  254. data/lib/kml/busstops-kml-514.kml +437 -0
  255. data/lib/kml/busstops-kml-515.kml +363 -0
  256. data/lib/kml/busstops-kml-516.kml +599 -0
  257. data/lib/kml/busstops-kml-517.kml +1078 -0
  258. data/lib/kml/busstops-kml-518.kml +709 -0
  259. data/lib/kml/busstops-kml-519.kml +179 -0
  260. data/lib/kml/busstops-kml-520.kml +225 -0
  261. data/lib/kml/busstops-kml-532.kml +363 -0
  262. data/lib/kml/busstops-kml-534.kml +179 -0
  263. data/lib/kml/busstops-kml-535.kml +989 -0
  264. data/lib/kml/busstops-kml-536.kml +1196 -0
  265. data/lib/kml/busstops-kml-537.kml +631 -0
  266. data/lib/kml/busstops-kml-540.kml +346 -0
  267. data/lib/kml/busstops-kml-541.kml +984 -0
  268. data/lib/kml/busstops-kml-542.kml +256 -0
  269. data/lib/kml/busstops-kml-543.kml +496 -0
  270. data/lib/kml/busstops-kml-544.kml +855 -0
  271. data/lib/kml/busstops-kml-545.kml +612 -0
  272. data/lib/kml/busstops-kml-546.kml +225 -0
  273. data/lib/kml/busstops-kml-547.kml +645 -0
  274. data/lib/kml/busstops-kml-548.kml +363 -0
  275. data/lib/kml/busstops-kml-549.kml +386 -0
  276. data/lib/kml/busstops-kml-550.kml +225 -0
  277. data/lib/kml/busstops-kml-551.kml +271 -0
  278. data/lib/kml/busstops-kml-566.kml +436 -0
  279. data/lib/kml/busstops-kml-567.kml +461 -0
  280. data/lib/kml/busstops-kml-568.kml +253 -0
  281. data/lib/kml/busstops-kml-571.kml +241 -0
  282. data/lib/kml/busstops-kml-572.kml +630 -0
  283. data/lib/kml/busstops-kml-573.kml +430 -0
  284. data/lib/kml/busstops-kml-574.kml +625 -0
  285. data/lib/kml/busstops-kml-575.kml +1110 -0
  286. data/lib/kml/busstops-kml-576.kml +1082 -0
  287. data/lib/kml/busstops-kml-577.kml +205 -0
  288. data/lib/kml/busstops-kml-581.kml +735 -0
  289. data/lib/kml/busstops-kml-582.kml +248 -0
  290. data/lib/kml/busstops-kml-594.kml +179 -0
  291. data/lib/kml/busstops-kml-595.kml +179 -0
  292. data/lib/kml/busstops-kml-597.kml +436 -0
  293. data/lib/kml/busstops-kml-598.kml +458 -0
  294. data/lib/kml/busstops-kml-601.kml +179 -0
  295. data/lib/kml/busstops-kml-602.kml +389 -0
  296. data/lib/kml/busstops-kml-603.kml +157 -0
  297. data/lib/kml/busstops-kml-605.kml +456 -0
  298. data/lib/kml/busstops-kml-606.kml +298 -0
  299. data/lib/kml/busstops-kml-607.kml +792 -0
  300. data/lib/kml/busstops-kml-608.kml +463 -0
  301. data/lib/kml/busstops-kml-626.kml +248 -0
  302. data/lib/kml/busstops-kml-628.kml +157 -0
  303. data/lib/kml/busstops-kml-629.kml +501 -0
  304. data/lib/kml/busstops-kml-630.kml +340 -0
  305. data/lib/kml/busstops-kml-631.kml +249 -0
  306. data/lib/kml/busstops-kml-632.kml +202 -0
  307. data/lib/kml/busstops-kml-633.kml +319 -0
  308. data/lib/kml/busstops-kml-635.kml +225 -0
  309. data/lib/kml/busstops-kml-636.kml +317 -0
  310. data/lib/kml/busstops-kml-638.kml +667 -0
  311. data/lib/kml/busstops-kml-656.kml +156 -0
  312. data/lib/kml/busstops-kml-657.kml +271 -0
  313. data/lib/kml/busstops-kml-660.kml +432 -0
  314. data/lib/kml/busstops-kml-662.kml +227 -0
  315. data/lib/kml/busstops-kml-663.kml +271 -0
  316. data/lib/kml/busstops-kml-664.kml +202 -0
  317. data/lib/kml/busstops-kml-665.kml +718 -0
  318. data/lib/kml/busstops-kml-666.kml +179 -0
  319. data/lib/kml/busstops-kml-667.kml +206 -0
  320. data/lib/kml/busstops-kml-669.kml +225 -0
  321. data/lib/kml/busstops-kml-688.kml +271 -0
  322. data/lib/kml/busstops-kml-690.kml +179 -0
  323. data/lib/kml/busstops-kml-691.kml +496 -0
  324. data/lib/kml/busstops-kml-692.kml +179 -0
  325. data/lib/kml/busstops-kml-693.kml +271 -0
  326. data/lib/kml/busstops-kml-695.kml +363 -0
  327. data/lib/kml/busstops-kml-696.kml +842 -0
  328. data/lib/kml/busstops-kml-697.kml +265 -0
  329. data/lib/kml/busstops-kml-698.kml +179 -0
  330. data/lib/kml/busstops-kml-700.kml +156 -0
  331. data/lib/kml/busstops-kml-719.kml +294 -0
  332. data/lib/kml/busstops-kml-721.kml +319 -0
  333. data/lib/kml/busstops-kml-722.kml +460 -0
  334. data/lib/kml/busstops-kml-723.kml +843 -0
  335. data/lib/kml/busstops-kml-724.kml +989 -0
  336. data/lib/kml/busstops-kml-725.kml +297 -0
  337. data/lib/kml/busstops-kml-726.kml +447 -0
  338. data/lib/kml/busstops-kml-727.kml +942 -0
  339. data/lib/kml/busstops-kml-728.kml +179 -0
  340. data/lib/kml/busstops-kml-75.kml +156 -0
  341. data/lib/kml/busstops-kml-750.kml +271 -0
  342. data/lib/kml/busstops-kml-751.kml +225 -0
  343. data/lib/kml/busstops-kml-752.kml +271 -0
  344. data/lib/kml/busstops-kml-753.kml +180 -0
  345. data/lib/kml/busstops-kml-754.kml +887 -0
  346. data/lib/kml/busstops-kml-755.kml +1067 -0
  347. data/lib/kml/busstops-kml-756.kml +609 -0
  348. data/lib/kml/busstops-kml-757.kml +448 -0
  349. data/lib/kml/busstops-kml-758.kml +391 -0
  350. data/lib/kml/busstops-kml-785.kml +341 -0
  351. data/lib/kml/busstops-kml-786.kml +365 -0
  352. data/lib/kml/busstops-kml-787.kml +662 -0
  353. data/lib/kml/busstops-kml-788.kml +1180 -0
  354. data/lib/kml/busstops-kml-789.kml +180 -0
  355. data/lib/kml/busstops-kml-816.kml +179 -0
  356. data/lib/kml/busstops-kml-817.kml +179 -0
  357. data/lib/kml/busstops-kml-818.kml +478 -0
  358. data/lib/kml/busstops-kml-819.kml +604 -0
  359. data/lib/kml/busstops-kml-820.kml +318 -0
  360. data/lib/kml/busstops-kml-849.kml +503 -0
  361. data/lib/kml/busstops-kml-850.kml +157 -0
  362. data/lib/kml/busstops-kml-877.kml +156 -0
  363. data/lib/kml/busstops-kml-908.kml +156 -0
  364. data/lib/kml/busstops-kml-969.kml +156 -0
  365. data/lib/sbf.rb +6 -0
  366. data/lib/sbf/engine.rb +19 -0
  367. data/lib/sbf/version.rb +3 -0
  368. data/lib/tasks/sbf_tasks.rake +4 -0
  369. metadata +467 -0
@@ -0,0 +1,1928 @@
1
+ //Declare the variables to be used in the REST URL as parameters.
2
+ document.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>');
3
+ document.write('<script type="text/javascript">djConfig = { parseOnLoad: true }</script>');
4
+
5
+ //suresh
6
+ var oneMapGif = "http://www.onemap.sg/plugin/images/Red_glow.gif";
7
+ var host = "http://www.onemap.sg/";
8
+ //var geometryHost = "http://10.0.6.236:6080/";
9
+
10
+ //var host ="http://119.73.244.163/";
11
+ var _baseMapHost = "http://www.onemap.sg/ArcGIS/rest/services/";
12
+ var _baseMapURL = _baseMapHost + "basemap/MapServer";
13
+ var tileHost1 = "http://e1.onemap.sg/ArcGIS/rest/services/"
14
+ var tileHost2 = "http://e1.onemap.sg/ArcGIS/rest/services/"
15
+ var _baseMapURL1;
16
+ var _baseMapURL2;
17
+ //var _OneMapGlobalToken="";
18
+ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
19
+
20
+
21
+ //var token = "qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr";
22
+
23
+
24
+ //
25
+ var restResponse;
26
+ var parsedJSON;
27
+ var url;
28
+ var XYGraphicsLayer;
29
+
30
+ var restURL = "";
31
+
32
+ var OneMap;
33
+ var NewOneMap;
34
+ var _OneMapDiv;
35
+
36
+
37
+ function GetOneMap(divName, baseMap, optionalProps) {// by AM
38
+ var i=1;
39
+ try { var center = optionalProps.center; } catch (err) { }
40
+ try { var level = optionalProps.level; } catch (err) { }
41
+ try { var layer = optionalProps.layer; } catch (err) { }
42
+
43
+ if (baseMap.toUpperCase() == "SM") {
44
+ _baseMapURL = _baseMapHost + "basemap" + "/MapServer";
45
+ _baseMapURL1=tileHost1 + "basemap" + "/MapServer";
46
+ _baseMapURL2=tileHost2 + "basemap" + "/MapServer";
47
+ }
48
+ else if (baseMap.toUpperCase() == "LL") {
49
+ _baseMapURL = _baseMapHost + "LOT_VIEW" + "/MapServer";
50
+ _baseMapURL1=tileHost1 + "LOT_VIEW" + "/MapServer";
51
+ _baseMapURL2=tileHost2 + "LOT_VIEW" + "/MapServer";
52
+ }
53
+ else {
54
+ _baseMapURL = _baseMapHost + baseMap + "/MapServer";
55
+ _baseMapURL1=tileHost1 + baseMap + "/MapServer";
56
+ _baseMapURL2=tileHost2 + baseMap + "/MapServer";
57
+
58
+ }
59
+
60
+ NewOneMap = this;
61
+ _OneMapDiv = divName;
62
+ dojo.require("esri.map");
63
+ //dojo.require("esri.layers.tiled");
64
+
65
+ esriConfig.defaults.map.slider = { left: "5px", top: "5px", width: null, height: "100px" };
66
+
67
+ //var tiledMapServiceLayer =new esri.layers.ArcGISTiledMapServiceLayer(_baseMapURL,{tileServers:[_baseMapURL1,_baseMapURL2]});
68
+
69
+ dojo.addOnLoad(function() {
70
+ var OneMap3;
71
+ var startExtent = getExtentForLevelnCenter(center, level)
72
+ var OneMap3 = new esri.Map(_OneMapDiv, { extent: startExtent });
73
+
74
+
75
+ ////////////////added to get tiles from AWS//////////////////
76
+
77
+ dojo.declare("OM.CustomTileServiceLayer", esri.layers.TiledMapServiceLayer, {
78
+ constructor: function() {
79
+ this.spatialReference = new esri.SpatialReference({ wkid:3414 });
80
+ this.initialExtent = (this.fullExtent = new esri.geometry.Extent(-4589.0529981345, 8065.64251572593, 96370.1129604966, 57234.9694430107, this.spatialReference));
81
+ this.tileInfo = new esri.layers.TileInfo({
82
+ "rows" : 256,
83
+ "cols" : 256,
84
+ "dpi" : 96,
85
+ "format" : "JPEG",
86
+ "origin" : {
87
+ "x" : -5878011.89743302,
88
+ "y" : 10172511.897433
89
+ },
90
+ "spatialReference" : {
91
+ "wkid" : 3414
92
+ },
93
+ "lods" : [
94
+ {"level" : 0, "resolution" : 76.4372195411057, "scale" : 288896},
95
+ {"level" : 1, "resolution" : 38.2186097705529, "scale" : 144448},
96
+ {"level" : 2, "resolution" : 19.1093048852764, "scale" : 72224},
97
+ {"level" : 3, "resolution" : 9.55465244263822, "scale" : 36112},
98
+ {"level" : 4, "resolution" : 4.77732622131911, "scale" : 18056},
99
+ {"level" : 5, "resolution" : 2.38866311065955, "scale" : 9028},
100
+ {"level" : 6, "resolution" : 1.19433155532978, "scale" : 4514},
101
+ {"level" : 7, "resolution" : 0.597165777664889, "scale" : 2257},
102
+ {"level" : 8, "resolution" : 0.298450596901194, "scale" : 1128}
103
+ ]
104
+ });
105
+
106
+ this.loaded = true;
107
+ this.onLoad(this);
108
+ },
109
+
110
+ getTileUrl: function(level, row, col) {
111
+ //var URL="http://cf" + i + ".onemap.sg/BASEMAP/Layers/_alllayers/";
112
+
113
+ var URL="http://e1.onemap.sg/BASEMAP/Layers/_alllayers/";
114
+
115
+ //var URL="http://e" + i + ".onemap.sg/BASEMAP/Layers/_alllayers/";
116
+ //i+=i;
117
+ //if(i>2){
118
+ //i=1;
119
+ //}
120
+ return URL +
121
+ "L" + dojo.string.pad(level, 2, '0') + "/" +
122
+ "R" + dojo.string.pad(row.toString(16), 8, '0') + "/" +
123
+ "C" + dojo.string.pad(col.toString(16), 8, '0') + "." +
124
+ "jpg";
125
+ }
126
+ });
127
+ ////////////////added to get tiles from AWS/////////////////////////////
128
+
129
+ if (baseMap.toUpperCase() == "SM")
130
+ {
131
+ OneMap3.addLayer(new OM.CustomTileServiceLayer());
132
+ }
133
+ else
134
+ {
135
+ var tiledMapServiceLayer =new esri.layers.ArcGISTiledMapServiceLayer(_baseMapURL,{tileServers:[_baseMapURL1,_baseMapURL2]});
136
+ OneMap3.addLayer(tiledMapServiceLayer);
137
+ }
138
+ ////////////////added to get tiles from AWS/////////////////////////////
139
+
140
+ //OneMap3.addLayer(tiledMapServiceLayer);
141
+
142
+ XYGraphicsLayer = new esri.layers.GraphicsLayer();
143
+
144
+ if ((layer != undefined) || (layer != null))
145
+ OneMap3.addLayer(layer);
146
+ NewOneMap.map = OneMap3;
147
+
148
+ //custom methods
149
+ NewOneMap.showLocation = showLocation;
150
+ NewOneMap.mashupTheme = mashupTheme;
151
+ NewOneMap.overlayKML = overlayKML;
152
+ NewOneMap.clearGraphics = clearGraphics;
153
+ NewOneMap.GetMultipleInfo = GetMultipleInfo;
154
+ NewOneMap.onOneMapExtentChange = extentChangeAction;
155
+
156
+ //dojo.connect(OneMap3, "onLoad", function() {
157
+
158
+ var newdiv = document.createElement('div');
159
+
160
+ var divIdName = 'OneMapLogo';
161
+ newdiv.setAttribute('id', divIdName);
162
+ //newdiv.setAttribute('onclick', function() { window.open('http://www.onemap.sg/home') });
163
+ newdiv.setAttribute('onclick',"window.open('http://www.onemap.sg/home')");
164
+ newdiv.setAttribute('style', "cursor:hand");
165
+ newdiv.setAttribute('style', "cursor:pointer");
166
+
167
+ document.getElementById(OneMap3.id+'_root').appendChild(newdiv);
168
+ document.getElementById('OneMapLogo').innerHTML="<img src='http://t1.onemap.sg/api/js/imap_small_logo.gif' style='vertical-align:bottom' /> <font style='font-family:Arial; font-size:0.7em; color:black;'><strong>&copy; 2013 OneMap</strong></font>";
169
+
170
+ var t = $('#' + OneMap3.id+'_root').position().top;
171
+ var l = $('#' + OneMap3.id+'_root').position().left;
172
+ var ht = parseInt(document.getElementById(OneMap3.id).style.height.replace('px', ''))
173
+ document.getElementById("OneMapLogo").style.top = (ht - 35) + 'px';
174
+ //document.getElementById("OneMapLogo").style.left = l + 'px';
175
+ document.getElementById("OneMapLogo").style.position="absolute";
176
+ document.getElementById("OneMapLogo").style.zIndex=100
177
+
178
+ // });
179
+ });
180
+
181
+ }
182
+
183
+
184
+ function getMultipleFactor(level) {
185
+
186
+ var zoomLevel1 = 76.4372195411057
187
+ var zoomLevel2 = 38.2186097705529
188
+ var zoomLevel3 = 19.1093048852764
189
+ var zoomLevel4 = 9.55465244263822
190
+ var zoomLevel5 = 4.77732622131911
191
+ var zoomLevel6 = 2.38866311065955
192
+ var zoomLevel7 = 1.19433155532978
193
+ var zoomLevel8 = 0.597165777664889
194
+ var zoomLevel9 = 0.298450596901194
195
+ var factor;
196
+ factor = 200 * eval("zoomLevel" + level)
197
+ return factor
198
+ }
199
+
200
+
201
+ function getExtentForPoint(x, y, buffer) {
202
+
203
+ var xLocation1 = parseFloat(x) - buffer
204
+ var yLocation1 = parseFloat(y) - buffer
205
+ var xLocation2 = parseFloat(x) + buffer
206
+ var yLocation2 = parseFloat(y) + buffer
207
+ var startExtent = new esri.geometry.Extent({ xmin: xLocation1, ymin: yLocation1, xmax: xLocation2, ymax: yLocation2, spatialReference: { wkid: 3414} });
208
+ return startExtent
209
+ }
210
+
211
+ function getExtentForLevelnCenter(center, level) {
212
+ var buffer = 200;
213
+ var xLocation
214
+ var yLocation
215
+ if ((center == null) || (center == undefined)) {
216
+ center = "28968.103,33560.969";
217
+ xLocation = center.split(",")[0]
218
+ yLocation = center.split(",")[1]
219
+
220
+ if ((level != null) || (level != undefined))
221
+ buffer = getMultipleFactor(level);
222
+ else
223
+ buffer = getMultipleFactor(1);
224
+ }
225
+ else {
226
+ // var xLocation=center.split(",")[0]
227
+ // var yLocation=center.split(",")[1]
228
+
229
+ if ((level != null) || (level != undefined))
230
+ buffer = getMultipleFactor(level);
231
+ else
232
+ buffer = getMultipleFactor(1);
233
+ }
234
+ xLocation = center.split(",")[0]
235
+ yLocation = center.split(",")[1]
236
+ var extent = getExtentForPoint(xLocation, yLocation, buffer)
237
+ return extent
238
+ }
239
+
240
+ function showLocation(xVal, yVal) {
241
+
242
+ var OneMap2 = this.map;
243
+ OneMap2.addLayer(XYGraphicsLayer);
244
+ XYGraphicsLayer.clear();
245
+ var xval = xVal;
246
+ var yval = yVal;
247
+ if (isNaN(xval) && isNaN(yval)) {
248
+ }
249
+ else {
250
+ var XYsymbol = new esri.symbol.PictureMarkerSymbol(oneMapGif, 20, 20)
251
+ var XYLocation = new esri.geometry.Point(xval, yval, new esri.SpatialReference({ wkid: 3414 }))
252
+ var XYGraphic = new esri.Graphic(XYLocation, XYsymbol);
253
+ XYGraphicsLayer.add(XYGraphic);
254
+
255
+
256
+ var Srchpoint = new esri.geometry.Extent(XYLocation.x - 150, XYLocation.y - 150, XYLocation.x + 150, XYLocation.y + 150, new esri.SpatialReference({ wkid: 4326 }));
257
+ OneMap2.setExtent(Srchpoint);
258
+
259
+ }
260
+
261
+ }
262
+
263
+
264
+ //----------------extentChangeAction
265
+
266
+ function extentChangeAction(functionName) {
267
+
268
+ var OneMap = this.map
269
+ dojo.connect(OneMap, "onExtentChange", functionName)
270
+ }
271
+
272
+ //-------------- init xmlhttp -------------------------------------------------
273
+ var xmlhttp;
274
+ var xmlhttp2;
275
+ function GetXmlHttpObject() {
276
+ if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
277
+ return new XMLHttpRequest();
278
+ }
279
+ if (window.ActiveXObject) { // code for IE6, IE5
280
+ return new ActiveXObject("Microsoft.XMLHTTP");
281
+ } return null;
282
+ }
283
+
284
+
285
+ //-------------- Basic Search -------------------------------------------------
286
+
287
+ function BasicSearch() {
288
+
289
+ this.token = "";
290
+ this.searchVal = "";
291
+ this.whereClause = "";
292
+ this.otptFlds = "";
293
+ this.returnGeom = "";
294
+ this.rset = "";
295
+ this.GetSearchResults = GetSearchResults;
296
+ }
297
+
298
+
299
+ function GetSearchResults(callback) {
300
+
301
+ var obj = this;
302
+
303
+ var token = obj.token;
304
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
305
+ var searchval = obj.searchVal;
306
+ var whereclause = obj.whereClause;
307
+ var otptFlds = obj.otptFlds;
308
+ var returngeom = obj.returnGeom;
309
+ var rset = obj.rset;
310
+
311
+ url = host + "API/services.svc/basicSearch?token=" + token
312
+
313
+ if (searchval != "") {
314
+ url = url + "&searchVal=" + searchval;
315
+ }
316
+ if (whereclause != "") {
317
+
318
+ url = url + "&wc=" + whereclause;
319
+ }
320
+ if (otptFlds != "") {
321
+
322
+ url = url + "&otptFlds=" + otptFlds;
323
+ }
324
+ if (returngeom != "") {
325
+
326
+ url = url + "&returnGeom=" + returngeom;
327
+ }
328
+ if (rset != "") {
329
+
330
+ url = url + "&rset=" + rset;
331
+ }
332
+
333
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
334
+ var outPutResults = new Object;
335
+ outPutResults.nop = parsedJSON.SearchResults[0].PageCount;
336
+ outPutResults.results = parsedJSON.SearchResults.splice(1, parsedJSON.SearchResults.length);
337
+ if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
338
+ callback(outPutResults);
339
+ });
340
+ }
341
+ //BizQuery ---------------------------------------------------------------
342
+
343
+ function BizQuery() {
344
+ this.token = "";
345
+ this.dist = "";
346
+ this.status ="";
347
+ this.code = "";
348
+ this.coord = "";
349
+ this.GetNextResults= GetNextResults;
350
+ }
351
+
352
+ function GetNextResults(callback){
353
+
354
+ var obj = this;
355
+ var token = obj.token;
356
+ var dist = obj.dist;
357
+ var status = obj.status;
358
+ var code = obj.code;
359
+ var coord = obj.coord;
360
+ // var rset = obj.rset;
361
+
362
+ url = host + "bizQuery/Service1.svc/getlist?token=" + token;
363
+ url = url + "&dist=" + dist;
364
+ url = url + "&status=" + status;
365
+ url = url + "&code=" + code;
366
+ url = url + "&coord=" + coord;
367
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
368
+ var outPutResults = new Object;
369
+ outPutResults.nop = parsedJSON.SearchResults[0].PageCount;
370
+ outPutResults.results = parsedJSON.SearchResults.splice(1, parsedJSON.SearchResults.length);
371
+ if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
372
+ callback(outPutResults);
373
+ });
374
+ }
375
+ //end for BizQuery
376
+
377
+ //-------------- Event Details -------------------------------------------------
378
+ function EventData() {
379
+ this.token = "";
380
+ this.extent = "";
381
+ this.rset = "";
382
+ this.GetEventData = GetEventData;
383
+ }
384
+
385
+ var htmlString;
386
+
387
+ function GetEventData(callback) {
388
+ var obj = this;
389
+ var token = obj.token;
390
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
391
+
392
+ var extent = obj.extent;
393
+ var rset = obj.rset;
394
+
395
+ url = host + "API/services.svc/getevents?token=" + token + "&extents=" + extent
396
+
397
+ restURL = url;
398
+
399
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
400
+ var outPutResults = new Object;
401
+ outPutResults.nop = parsedJSON.SearchResults[0].PageCount;
402
+ outPutResults.results = parsedJSON.SearchResults.splice(1, parsedJSON.SearchResults.length);
403
+ if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
404
+ callback(outPutResults);
405
+ });
406
+
407
+ }
408
+
409
+
410
+ //-------------- Reverse Geocode -------------------------------------------------
411
+ function GetAddressInfo() {
412
+ this.token = "";
413
+ this.Postalcode = "";
414
+ this.XY = "";
415
+ this.GetAddress = GetAddress;
416
+ }
417
+
418
+ function GetAddress(callback) {
419
+ var obj = this;
420
+ var token = obj.token;
421
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
422
+
423
+ var Postalcode = obj.Postalcode;
424
+ var XY = obj.XY;
425
+ url = host + "API/services.svc/revgeocode?token=" + token
426
+ //url = host + "API/services.svc/revgeocode?token=Hfc6cEp4qybVIw4sagxi1yQbFIEzPUiN+yRkAV6/pODByLmmDo878pYNVSTE6ABE0YReToPoj2VOmM7btBdxP9DOuAzJs/Ip"
427
+ if ((Postalcode == "") && (XY == "")) {
428
+ var outPutResults = new Object;
429
+ outPutResults.results = "No results";
430
+ callback(outPutResults);
431
+ return
432
+ }
433
+
434
+ if (XY != "") {
435
+ url = url + "&location=" + XY;
436
+ }
437
+ else if (Postalcode != "") {
438
+ url = url + "&Postalcode=" + Postalcode;
439
+ }
440
+
441
+ restURL = url;
442
+
443
+ $.getJSON(url + "&callback=?", function (parsedJSON) {
444
+ debugger;
445
+ var outPutResults = new Object;
446
+ outPutResults.results = parsedJSON.GeocodeInfo;
447
+ if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
448
+ callback(outPutResults);
449
+ });
450
+ }
451
+
452
+ //-------------- Static Map -------------------------------------------------
453
+ function StaticMap() {
454
+ this.token = "";
455
+ this.bmap = "";
456
+ this.center = "";
457
+ this.lyrIds = "";
458
+ this.size = "";
459
+ this.level = "";
460
+ this.points = "";
461
+ this.lines = "";
462
+ this.polys = "";
463
+ this.weight = "";
464
+ this.color = "";
465
+ this.fillColor = "";
466
+ this.GetStaticMap = GetStaticMap
467
+ }
468
+
469
+ function GetStaticMap() {
470
+
471
+ var obj = this;
472
+ var token = obj.token;
473
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
474
+ var bmap = obj.bmap;
475
+ var center = obj.center;
476
+ var lyrids = obj.lyrIds;
477
+ var size = obj.size;
478
+ var level = obj.level;
479
+ var points = obj.points;
480
+ var lines = obj.lines;
481
+ var polys = obj.polys;
482
+
483
+ var weight = obj.weight;
484
+ var color = obj.color;
485
+ var fillcolor = obj.fillcolor;
486
+
487
+ if (points == "" && lines == "" && polys == "") {debugger;
488
+
489
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids;
490
+ }
491
+ else if (points != "" && lines == "" && polys == "") {
492
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&points=" + points;
493
+ }
494
+ else if (points == "" && lines != "" && polys == "") {
495
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&lines=" + lines;
496
+ }
497
+ else if (points == "" && lines == "" && polys != "") {
498
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&polys=" + polys;
499
+ }
500
+ else if (points != "" && lines != "" && polys != "") {
501
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&points=" + points + "&polys=" + polys + "&lines=" + lines;
502
+ }
503
+ else if (points != "" && lines != "" && polys == "") {
504
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&points=" + points + "&lines=" + lines;
505
+ }
506
+ else if (points != "" && lines == "" && polys != "") {
507
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&points=" + points + "&polys=" + polys;
508
+ }
509
+ else if (points == "" && lines != "" && polys != "") {
510
+ url = host + "API/services.svc/getMap?token=" + token + "&bmap=" + bmap + "&size=" + size + "&level=" + level + "&center=" + center + "&lyrIds=" + lyrids + "&polys=" + polys + "&lines=" + lines;
511
+ }
512
+
513
+
514
+ //For the weight, color and fill Color.
515
+ if (lines != "" && polys != "") {
516
+ if (weight != "")
517
+ { url = url + "&weight=" + weight; }
518
+ if (color != "")
519
+ { url = url + "&color=" + color; }
520
+ if (fillcolor != "")
521
+ { url = url + "&fillColor=" + fillcolor; }
522
+ }
523
+
524
+ restURL = url;
525
+
526
+ return url;
527
+
528
+
529
+ }
530
+
531
+
532
+ //--------------- Map Route --------------------------------------
533
+
534
+ function Route() {
535
+ this.token = "";
536
+ this.routeStops = "";
537
+ this.routeMode = "";
538
+ this.avoidERP = "";
539
+ this.routeOption = "";
540
+ this.barriers = "";
541
+ this.GetRoute = GetRoute;
542
+ }
543
+
544
+ function GetRoute(callback) {debugger;
545
+
546
+ var token = this.token;
547
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
548
+ var routestops = this.routeStops;
549
+ var routemode = this.routeMode;
550
+ var avoiderp = this.avoidERP;
551
+ var routeOption = this.routeOption;
552
+ var barriers = this.barriers;
553
+
554
+ url = host + "API/services.svc/route/solve?token=" + token + "&routeStops=" + routestops + "&routeMode=" + routemode + "&avoidERP=" + avoiderp + "&routeOption=" + routeOption + "&barriers=" + barriers;
555
+
556
+ restURL = url;
557
+
558
+
559
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
560
+ var outPutResults = new Object;
561
+ outPutResults.results = parsedJSON
562
+
563
+ try
564
+ {
565
+ if(outPutResults.results.directions[0].features.length > 0)
566
+ {
567
+ callback(outPutResults);
568
+ return;
569
+ }
570
+ else if (outPutResults.results.SearchResults[0].ErrorMessage != null)
571
+ {
572
+ if (outPutResults.results.SearchResults[0].ErrorMessage=="Error solving route")
573
+ {
574
+ outPutResults.results = "No results";
575
+ }
576
+ else if(outPutResults.results.SearchResults[0].ErrorMessage == "No result(s) found")
577
+ {
578
+ outPutResults.results = "No results";
579
+ }
580
+ else if (outPutResults.results.SearchResults[0].ErrorMessage==""){
581
+ outPutResults.results = "No results";
582
+ }
583
+ else if (outPutResults.results.SearchResults[0].ErrorMessage=="stops exceed")
584
+ {
585
+ outPutResults.results = "Stops more than nine";
586
+ }
587
+ }
588
+
589
+ }
590
+ catch(err)
591
+ {
592
+ //callback(outPutResults);
593
+ alert("No result(s) found");
594
+ }
595
+
596
+
597
+ //if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
598
+ callback(outPutResults);
599
+ });
600
+ }
601
+
602
+
603
+
604
+ //-------------- Theme Search -------------------------------------------------
605
+
606
+ function ThemeSearch() {
607
+
608
+ this.token = "";
609
+ this.searchVal = "";
610
+ this.returnGeom = "";
611
+ this.otptFlds = "";
612
+ this.rset = "";
613
+ this.GetThemeSearchResults = GetThemeSearchResults;
614
+ }
615
+
616
+ function GetThemeSearchResults(callback) {
617
+
618
+
619
+ var obj = this;
620
+ var token = obj.token;
621
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
622
+ var searchval = obj.searchVal;
623
+ var otptFlds = obj.otptFlds;
624
+ var returnGeom = obj.returnGeom;
625
+ var rset = obj.rset;
626
+ url = host;
627
+ if (searchval != "") {
628
+ url = url + "API/services.svc/themeSearch?token=" + token + "&searchVal=" + searchval;
629
+ }
630
+ //Search Value and page numnber
631
+ if (otptFlds != "") {
632
+
633
+ url = url + "&otptFlds=" + otptFlds;
634
+ }
635
+
636
+ if (returnGeom != "") {
637
+
638
+ url = url + "&returnGeom=" + returnGeom;
639
+ }
640
+
641
+ if (rset != "") {
642
+
643
+ url = url + "&rset=" + rset;
644
+ }
645
+
646
+ restURL = url;
647
+
648
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
649
+ var outPutResults = new Object;
650
+
651
+ outPutResults.nop = parsedJSON.SearchResults[0].PageCount;
652
+ outPutResults.results = parsedJSON.SearchResults.splice(1, parsedJSON.SearchResults.length);
653
+
654
+ if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
655
+ callback(outPutResults);
656
+ });
657
+
658
+ }
659
+
660
+
661
+
662
+ //-------------- Mashup API -- WIth all params -------------------------------------------------
663
+ var layerData = "-";
664
+
665
+
666
+ function GetLayerInfoClass() {
667
+ this.themeName = "";
668
+ this.ExtracLayerInfo = ExtracLayerInfo;
669
+
670
+ }
671
+
672
+ function ExtracLayerInfo(callback) {
673
+ layerName = this.themeName
674
+ var url = host + "API/services.svc/layerinfoDM?layername=" + layerName;
675
+
676
+ restURL = url;
677
+
678
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
679
+ var outPutResults = new Object;
680
+ var firstRecord = parsedJSON.LayerInfo[0]
681
+ outPutResults.RelatedTabName = firstRecord.ADD_TABLE_NAM
682
+
683
+ if (firstRecord.ADD_TABLE_NAM != "") {
684
+ var callOutURL = host + "API/services.svc/" + firstRecord.ADD_TABLE_NAM + "/" + firstRecord.CALLOUTFIELDNAME + "/"
685
+
686
+ outPutResults.calloutURL = callOutURL;
687
+ }
688
+ else {
689
+ outPutResults.calloutURL = firstRecord.CALLOUTURL;
690
+ }
691
+
692
+ outPutResults.calloutFieldName = firstRecord.CALLOUTFIELDNAME
693
+ outPutResults.Category = firstRecord.CATEGORY
694
+ outPutResults.FeatureType = firstRecord.FEATTYPE;
695
+ outPutResults.MinLevel = firstRecord.MINLEVEL
696
+ outPutResults.MaxLevel = firstRecord.MAXLEVEL
697
+ outPutResults.IconPath = firstRecord.IconPath
698
+ outPutResults.AgencyName = firstRecord.AGENCY
699
+ outPutResults.FieldNames = firstRecord.FIELD_NAM_T
700
+ outPutResults.Icon = firstRecord.ICON_NAM_T
701
+ outPutResults.MapTipFieldName = firstRecord.FIELD_NAM_T.split(",")[0];
702
+ outPutResults.visibleFields = firstRecord.SHOWNATTRIBS;
703
+ outPutResults.pointColour = firstRecord.COLOR_T;
704
+ outPutResults.color = firstRecord.COLOR
705
+ outPutResults.outlineColor = firstRecord.OUTLINECOLOR
706
+ outPutResults.lineThickness = firstRecord.LINETHICKNESS
707
+
708
+ callback(outPutResults)
709
+ });
710
+ }
711
+
712
+
713
+ function MashupData(oneMap) {
714
+ this.token = "";
715
+ this.themeName = "";
716
+ this.outputFields = "";
717
+ this.whereClause = "";
718
+ this.extendedWhereClause = "";
719
+ this.extent = "";
720
+ this.map = "";
721
+ this.graphicLayer = "";
722
+ this.GetMashupData = GetMashupData;
723
+ this.layerData = "";
724
+ this.GetDataForCallout = GetDataForCallout;
725
+ this.formatResultsEnhanced = formatResultsEnhanced;
726
+ }
727
+
728
+
729
+ function GetDataForCallout(graphic, wc, callback) {
730
+ var mashupObj = this;
731
+ var layerInfo = mashupObj.layerData;
732
+ var calloutURL = layerInfo.calloutURL;
733
+
734
+ if (calloutURL != "") {
735
+
736
+ calloutURL = calloutURL + graphic.attributes[layerInfo.calloutFieldName];
737
+ calloutURL = calloutURL + "?token=" + _OneMapGlobalToken
738
+ if (wc != "") { calloutURL = calloutURL + "?wc=" + wc }
739
+
740
+ $.getJSON(calloutURL + "&callback=?", function(parsedJSON) {
741
+ var outPutResults = new Object;
742
+ outPutResults = parsedJSON.SearchResults;
743
+ callback(outPutResults);
744
+ })
745
+ }
746
+ else {
747
+ var outPutResults = new Array;
748
+
749
+ outPutResults[0] = graphic.attributes;
750
+ callback(outPutResults);
751
+ }
752
+ }
753
+
754
+ function formatResultsEnhanced(resultObject) {
755
+ //debugger;
756
+ var nameVal = ""
757
+ nameVal = nameVal + "<br/>"
758
+ // to add Name on top
759
+ for (var key in resultObject[0]) {
760
+ switch (key) {
761
+ case 'NAME':
762
+ if (resultObject[0]["NAME"] != "") {
763
+ nameVal += "<strong>" + resultObject[0][key] + "</strong>" + "<br/>"
764
+ break;
765
+ }
766
+ else { break; }
767
+ }
768
+ }
769
+ for (var key in resultObject[0]) {
770
+ switch (key) {
771
+ case 'NAME':
772
+ if (resultObject[0]["NAME"] != "") {
773
+ break;
774
+ }
775
+ else { break; }
776
+ case "PHOTOURL":
777
+ if (resultObject[0]["PHOTOURL"] != "") {
778
+ break;
779
+ }
780
+ else { break; }
781
+ case "ICON_NAME":
782
+ if (resultObject[0]["ICON_NAME"] != "") {
783
+ break;
784
+ }
785
+ else { break; }
786
+ case "XY":
787
+ if (resultObject[0]["XY"] != "") {
788
+ break;
789
+ }
790
+ else { break; }
791
+ case 'DESCRIPTION':
792
+ if (resultObject[0]["DESCRIPTION"] != "") {
793
+ nameVal += resultObject[0]["DESCRIPTION"] + " "
794
+ break;
795
+ }
796
+ else { break; }
797
+ case "HYPERLINK":
798
+ if (resultObject[0]["HYPERLINK"] != "") {
799
+ nameVal += "<br/><a href=" + resultObject[0]["HYPERLINK"] + " target='_blank'>More Info</a>" + "<br/>"
800
+ break;
801
+ }
802
+ else { break; }
803
+ case "ADDRESSSTREETNAME":
804
+ if (resultObject[0]["ADDRESSSTREETNAME"] != "") {
805
+ nameVal += resultObject[0]["ADDRESSSTREETNAME"] + " "
806
+ break;
807
+ }
808
+ else { break; }
809
+ case "ADDRESSFLOORNUMBER":
810
+ if (resultObject[0]["ADDRESSFLOORNUMBER"] != "") {
811
+ nameVal += resultObject[0]["ADDRESSFLOORNUMBER"] + " "
812
+ break;
813
+ }
814
+ else { break; }
815
+ case "ADDRESSBLOCKHOUSENUMBER":
816
+ if (resultObject[0]["ADDRESSBLOCKHOUSENUMBER"] != "") {
817
+ nameVal += resultObject[0]["ADDRESSBLOCKHOUSENUMBER"] + " "
818
+ break;
819
+ }
820
+ else { break; }
821
+ case "ADDRESSBUILDINGNAME":
822
+ if (resultObject[0]["ADDRESSBUILDINGNAME"] != "") {
823
+ nameVal += resultObject[0]["ADDRESSBUILDINGNAME"] + " "
824
+ break;
825
+ }
826
+ else { break; }
827
+ case "ADDRESSFLOORNUMBER":
828
+ if (resultObject[0]["ADDRESSFLOORNUMBER"] != "") {
829
+ nameVal += resultObject[0]["ADDRESSFLOORNUMBER"] + " "
830
+ break;
831
+ }
832
+ else { break; }
833
+ case "ADDRESSUNITNUMBER":
834
+ if (resultObject[0]["ADDRESSUNITNUMBER"] != "") {
835
+ nameVal += resultObject[0]["ADDRESSUNITNUMBER"] + " "
836
+ break;
837
+ }
838
+ else { break; }
839
+ case "ADDRESSPOSTALCODE":
840
+ if (resultObject[0]["ADDRESSPOSTALCODE"] != "") {
841
+ nameVal += resultObject[0]["ADDRESSPOSTALCODE"] + " "
842
+ break;
843
+ }
844
+ else { break; }
845
+ case "SYMBOLCOLOR":
846
+ if (resultObject[0]["SYMBOLCOLOR"] != "") {
847
+ break;
848
+ }
849
+ else { break; }
850
+ case "MAPTIP":
851
+ if (resultObject[0]["MAPTIP"] != "") {
852
+ break;
853
+ }
854
+ else { break; }
855
+ case "OBJECTID":
856
+ if (resultObject[0]["OBJECTID"] != "") {
857
+ break;
858
+ }
859
+ else { break; }
860
+ default:
861
+ nameVal += resultObject[0][key] + "<br/>"
862
+ }
863
+ }
864
+ // for photo to be on bottom
865
+ for (var key in resultObject[0]) {
866
+ switch (key) {
867
+ case "PHOTOURL":
868
+ if (resultObject[0]["PHOTOURL"] != "") {
869
+ nameVal += "<img src=" + resultObject[0]["PHOTOURL"] + "></img>" + "<br/>"
870
+ break;
871
+ }
872
+ else { break; }
873
+ }
874
+ }
875
+ return nameVal
876
+
877
+ }
878
+
879
+ function GetMashupData(callback) {
880
+ var obj = this;
881
+ var token = obj.token;
882
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } else { _OneMapGlobalToken = token } } catch (err) { }
883
+ var themename = obj.themeName;
884
+ var otptFlds = obj.outputFields;
885
+ var whereclause = obj.whereClause;
886
+ var extent = obj.extent;
887
+ var extendedWhereClause = obj.extendedWhereClause;
888
+ var graphicLayer = obj.graphicLayer;
889
+ var OneMap = obj.map
890
+
891
+ url = host + "API/services.svc/mashupData";
892
+
893
+ if (themename != "")
894
+ url = url + "?token=" + token + "&themeName=" + themename;
895
+
896
+ if (otptFlds != "")
897
+ url = url + "&otptFlds=" + otptFlds;
898
+
899
+ if (whereclause != "")
900
+ url = url + "&wc=" + whereclause;
901
+
902
+ if (extent != "")
903
+ url = url + "&extents=" + extent;
904
+
905
+ if (extendedWhereClause != "")
906
+ url = url + "&exwc=" + extendedWhereClause;
907
+ restURL = url;
908
+
909
+ if ((obj.layerData == undefined) || (obj.layerData == "")) {
910
+ var extractData = new GetLayerInfoClass()
911
+ extractData.themeName = themename
912
+
913
+ var extractedLayerData = extractData.ExtracLayerInfo(function(results) {
914
+ layerData = results
915
+ })
916
+ }
917
+
918
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
919
+
920
+ var outPutResults = new Object;
921
+ if (parsedJSON.SrchResults.length == 1) {
922
+ outPutResults.results = "No results";
923
+ callback(outPutResults);
924
+ return
925
+ }
926
+
927
+ outPutResults.count = parsedJSON.SrchResults[0].FeatCount;
928
+ outPutResults.results = parsedJSON.SrchResults.splice(1, parsedJSON.SrchResults.length - 1);
929
+ outPutResults.theme = themename;
930
+
931
+ if ((obj.layerData == undefined) || (obj.layerData == "")) {
932
+ obj.layerData = layerData;
933
+ }
934
+ else {
935
+ layerData = obj.layerData;
936
+ }
937
+
938
+ var calloutFieldName = layerData.calloutFieldName
939
+ var calloutFields = layerData.calloutFields;
940
+ var calloutURL = layerData.calloutURL;
941
+ var calloutUniqueFld = layerData.calloutUniqueFld;
942
+ var iconPath = layerData.IconPath
943
+ var featType = layerData.FeatureType
944
+ var color = layerData.color
945
+
946
+ outPutResults.calloutFieldName = calloutFieldName
947
+ outPutResults.calloutURL = calloutURL
948
+ outPutResults.calloutUniqueFld = calloutUniqueFld
949
+ outPutResults.iconPath = iconPath
950
+ outPutResults.featType = featType
951
+ outPutResults.graphicLayer = graphicLayer;
952
+
953
+ if ((layerData.color != undefined) && (layerData.color != undefined)) {
954
+ outPutResults.color = hexToRGB(layerData.color);
955
+ }
956
+ else {
957
+ outPutResults.color = '255,255,255';
958
+ }
959
+
960
+ if ((layerData.outlineColor != undefined) && (layerData.outlineColor != undefined)) {
961
+ outPutResults.outlineColor = hexToRGB(layerData.outlineColor);
962
+ }
963
+ else {
964
+ outPutResults.outlineColor = '255,255,255';
965
+ }
966
+
967
+ if ((layerData.lineThickness != undefined) && (layerData.lineThickness != undefined)) {
968
+ outPutResults.lineThickness = layerData.lineThickness;
969
+ }
970
+ else {
971
+ outPutResults.lineThickness = '1';
972
+ }
973
+ callback(outPutResults);
974
+ });
975
+
976
+ }
977
+
978
+ function GetMultipleInfo(url, results) {
979
+
980
+ $.getJSON(url + "?token=" + _OneMapGlobalToken + "&callback=?", function(parsedJSON) {
981
+
982
+ var outPutResults = new Object;
983
+ outPutResults = parsedJSON.SearchResults;
984
+ results(outPutResults);
985
+
986
+ })
987
+
988
+ }
989
+
990
+ function cutHex(h) { return (h.charAt(0) == "#") ? h.substring(1, 7) : h }
991
+
992
+ function hexToRGB(hexValue) {
993
+ var h = hexValue;
994
+ var r = parseInt((cutHex(h)).substring(0, 2), 16);
995
+ var g = parseInt((cutHex(h)).substring(2, 4), 16);
996
+ var b = parseInt((cutHex(h)).substring(4, 6), 16);
997
+ return (r + ',' + g + ',' + b)
998
+ }
999
+
1000
+
1001
+ //---------------------------------------KML -------------------------------
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+
1011
+ //-------------------------------------- Overlay KML End here-------------------------------
1012
+ var OneMapKML;
1013
+ function overlayKML(kmlFilePath) {
1014
+
1015
+ OneMapKML = this.map;
1016
+ var pointcoordinates = new String();
1017
+ var linecoordinates = new String();
1018
+ var isFirefox = false;
1019
+ var url = kmlFilePath;
1020
+ var xmlDoc;
1021
+
1022
+ if (url.indexOf('160.96.187.80')>0){url=host+"api/Services.svc/overlayKML?path=" + url}
1023
+ if (url.indexOf('www.onemap.sg')>0){url=host+"api/Services.svc/overlayKML?path=" + url}
1024
+
1025
+ if (xmlDoc != null) return;
1026
+ if (document.implementation && document.implementation.createDocument) {
1027
+
1028
+ var request = new XMLHttpRequest();
1029
+ request.open("GET", url, false);
1030
+ request.send(null);
1031
+ xmlDoc = (new DOMParser()).parseFromString(request.responseText, "text/xml");
1032
+
1033
+ GetStringFromKML(xmlDoc);
1034
+
1035
+ }
1036
+ else if (window.ActiveXObject) {
1037
+ xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
1038
+ xmlDoc.onreadystatechange = function() {
1039
+ if (xmlDoc.readyState == 4) { isFirefox = false; GetStringFromKML(xmlDoc); }
1040
+ };
1041
+ }
1042
+ else {
1043
+ var request = new XMLHttpRequest();
1044
+ request.open("GET", url, false);
1045
+ request.send(null);
1046
+ xmlDoc = (new DOMParser()).parseFromString(request.responseText, "text/xml");
1047
+ GetStringFromKML(xmlDoc);
1048
+ }
1049
+ xmlDoc.load(url);
1050
+
1051
+ }
1052
+
1053
+
1054
+ function verify() {
1055
+ if (xmlDoc.readyState != 4) {
1056
+ return false;
1057
+ }
1058
+ }
1059
+ var RootNode;
1060
+ function GetStringFromKML(xmlDoc) {
1061
+
1062
+
1063
+ var nodeList = xmlDoc.XmlNodeList;
1064
+
1065
+ var strng = new String();
1066
+ var str = String;
1067
+ str = "";
1068
+ var linestr = String;
1069
+ linestr = "";
1070
+ var nameValue = String;
1071
+ nameValue = ""
1072
+ RootNode= xmlDoc.documentElement;
1073
+ var nodelist1 = xmlDoc.getElementsByTagName("Placemark")
1074
+
1075
+ if (nodelist1.length == 0) {
1076
+ alert("Sorry.No feature found in KML file.")
1077
+ return
1078
+ }
1079
+
1080
+ for (var i = 0; i < nodelist1.length; i++) {
1081
+ linestr = "";
1082
+ str = "";
1083
+ nameValue="";
1084
+
1085
+ var nodelist2 = nodelist1[i].getElementsByTagName("Point")
1086
+ var nodelist3 = nodelist1[i].getElementsByTagName("LinearRing")
1087
+ var nodelist4 = nodelist1[i].getElementsByTagName("LineString")
1088
+
1089
+ if (nodelist2.length != 0) {
1090
+ var PointNode = nodelist1[i].getElementsByTagName("Point")[0].getElementsByTagName("coordinates")[0].childNodes[0].nodeValue;
1091
+
1092
+ var infoWindowContent=GetInfoWindowContent(nodelist1[i]);
1093
+
1094
+ var iconName=GetIconNameFromKMLNode(nodelist1[i]);
1095
+
1096
+ addPointToMap(PointNode,infoWindowContent,iconName)
1097
+ str = ""
1098
+
1099
+ }
1100
+
1101
+ if (nodelist3.length != 0) {
1102
+ var LineNode = nodelist1[i].getElementsByTagName("LinearRing")[0].getElementsByTagName("coordinates")[0].text;
1103
+
1104
+ try{
1105
+ var description = nodelist1[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
1106
+ var checkforname =nodelist1[i].xml;
1107
+ if (checkforname.indexOf("<name>")>=0)
1108
+ {
1109
+ var name =nodelist1[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
1110
+ if (name!=null && name!="" && name!=undefined)
1111
+ {
1112
+ nameValue=name+"<br/>"
1113
+ }
1114
+ if (description!=null && description!="" && description!=undefined)
1115
+ {
1116
+ nameValue+=description+"<br/>";
1117
+ }
1118
+ }
1119
+ else
1120
+ {
1121
+ nameValue=description;
1122
+ }
1123
+ }
1124
+ catch (err)
1125
+ {
1126
+
1127
+ }
1128
+
1129
+ linestr += LineNode + "~"
1130
+ splitDataandAddPoint(str, linestr, nameValue);
1131
+
1132
+ }
1133
+
1134
+ if (nodelist4.length != 0) {
1135
+ var LineNode = nodelist1[i].getElementsByTagName("LineString")[0].getElementsByTagName("coordinates")[0].text;
1136
+ //var nameValue = nodelist1[i].getElementsByTagName("description")[0].childNodes[0].nodeValue
1137
+ try{
1138
+ var description = nodelist1[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
1139
+ var checkforname =nodelist1[i].xml;
1140
+ if (checkforname.indexOf("<name>")>=0)
1141
+ {
1142
+ var name =nodelist1[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
1143
+ if (name!=null && name!="" && name!=undefined)
1144
+ {
1145
+ nameValue=name+"<br/>"
1146
+ }
1147
+ if (description!=null && description!="" && description!=undefined)
1148
+ {
1149
+ nameValue+=description+"<br/>";
1150
+ }
1151
+ }
1152
+ else
1153
+ {
1154
+ if (description!=null && description!="" && description!=undefined)
1155
+ {
1156
+ nameValue=description;
1157
+ }
1158
+ }
1159
+ }
1160
+ catch (err)
1161
+ {
1162
+
1163
+ }
1164
+ linestr += LineNode + "~"
1165
+ splitDataandAddLines(linestr, nameValue);
1166
+
1167
+ }
1168
+ }
1169
+
1170
+ }
1171
+
1172
+ function GetIconNameFromKMLNode(inputNode)
1173
+ {
1174
+ var iconName=""
1175
+ try
1176
+ {
1177
+
1178
+ try
1179
+ {
1180
+ var stylelist = RootNode.getElementsByTagName("Style");
1181
+
1182
+ for (var i = 0; i < stylelist.length; i++)
1183
+ {
1184
+ var styleurl = inputNode.getElementsByTagName("styleUrl")[0].text;
1185
+ styleurl=styleurl.replace('#','');
1186
+ var styleid= RootNode.getElementsByTagName("Style")[i].attributes.getNamedItem("id").nodeValue;
1187
+ if (styleurl==styleid)
1188
+ {
1189
+ iconName=RootNode.getElementsByTagName("Style")[i].getElementsByTagName("IconStyle")[0].getElementsByTagName("Icon")[0].getElementsByTagName("href")[0].childNodes[0].nodeValue;
1190
+ try
1191
+ {
1192
+ iconName+=","+RootNode.getElementsByTagName("Style")[i].getElementsByTagName("IconStyle")[0].getElementsByTagName("Icon")[0].getElementsByTagName("width")[0].childNodes[0].nodeValue;
1193
+ iconName+=","+ RootNode.getElementsByTagName("Style")[i].getElementsByTagName("IconStyle")[0].getElementsByTagName("Icon")[0].getElementsByTagName("height")[0].childNodes[0].nodeValue;
1194
+ }
1195
+ catch(err)
1196
+ {
1197
+ iconName+=",20,20";
1198
+ }
1199
+ break;
1200
+ }
1201
+
1202
+ }
1203
+
1204
+ }
1205
+ catch(err)
1206
+ {
1207
+ iconName=inputNode.getElementsByTagName("Style")[0].getElementsByTagName("IconStyle")[0].getElementsByTagName("Icon")[0].getElementsByTagName("href")[0].childNodes[0].nodeValue;
1208
+ try
1209
+ {
1210
+ iconName+=","+RootNode.getElementsByTagName("Style")[i].getElementsByTagName("IconStyle")[0].getElementsByTagName("Icon")[0].getElementsByTagName("width")[0].childNodes[0].nodeValue;
1211
+ iconName+=","+ RootNode.getElementsByTagName("Style")[i].getElementsByTagName("IconStyle")[0].getElementsByTagName("Icon")[0].getElementsByTagName("height")[0].childNodes[0].nodeValue;
1212
+ }
1213
+ catch(err)
1214
+ {
1215
+ iconName+=",20,20";
1216
+ }
1217
+ }
1218
+
1219
+
1220
+
1221
+
1222
+ }
1223
+ catch (err)
1224
+ {
1225
+ iconName=""
1226
+ }
1227
+ return iconName
1228
+
1229
+ }
1230
+
1231
+ function GetInfoWindowContent(inputNode)
1232
+
1233
+ {
1234
+
1235
+
1236
+ var nValue = "";
1237
+ var nameValue="";
1238
+
1239
+ try {
1240
+
1241
+ nValue = inputNode.getElementsByTagName("name")[0].childNodes[0].nodeValue;
1242
+ if (nValue!=null && nValue!="" && nValue!=undefined)
1243
+ {
1244
+ nameValue +=nValue + "</BR>"
1245
+ }
1246
+ else
1247
+ {
1248
+ nValue = inputNode.getElementsByTagName("name")[0].childNodes[0].text;
1249
+ if (nValue!=null && nValue!="" && nValue!=undefined)
1250
+ {
1251
+ nameValue +=nValue + "</BR>"
1252
+ }
1253
+
1254
+ }
1255
+ }
1256
+ catch (err) {
1257
+
1258
+ }
1259
+
1260
+ try {
1261
+
1262
+ nValue = inputNode.getElementsByTagName("description")[0].childNodes[0].nodeValue;
1263
+
1264
+ if (nValue!=null && nValue!="" && nValue!=undefined)
1265
+ {
1266
+ nameValue += nValue + "</BR>";
1267
+
1268
+ }
1269
+ else
1270
+ {
1271
+ nValue = inputNode.getElementsByTagName("description")[0].childNodes[0].text;
1272
+
1273
+ if (nValue!=null && nValue!="" && nValue!=undefined)
1274
+ {
1275
+ nameValue += nValue + "</BR>";
1276
+ }
1277
+
1278
+ }
1279
+
1280
+ }
1281
+ catch (err) {
1282
+
1283
+ }
1284
+ return nameValue
1285
+
1286
+ }
1287
+
1288
+
1289
+ function splitDataandAddLines(lineCord, nameValue) {
1290
+
1291
+
1292
+ if (lineCord.length != 0) {
1293
+
1294
+ addPolylineToMap(lineCord.split(' '), nameValue)
1295
+ }
1296
+
1297
+ }
1298
+
1299
+
1300
+ function splitDataandAddPoint(xyCord, lineCord, nameValue) {
1301
+
1302
+
1303
+
1304
+ if (xyCord.length != 0) {
1305
+ inputXY = xyCord;
1306
+ var strLen = inputXY.length;
1307
+ inputXY = inputXY.slice(0, strLen - 1);
1308
+ var coords = new Array();
1309
+ coords = inputXY.split("~")
1310
+ for (var i = 0; i < coords.length; i++) {
1311
+ var coords1 = coords[i]
1312
+ var crds = new Array();
1313
+ crds = coords1.split("|")
1314
+ var crd = crds[0]
1315
+ var crd1 = crds[1]
1316
+ var nV = crd1.slice(0, crd1.length - 1)
1317
+ var fnV = new Array();
1318
+ fnV = nV.split("^@")
1319
+ var fnVfinal = fnV[i]
1320
+ var xCord = crd.split(",")[0]
1321
+ var yCord = crd.split(",")[1]
1322
+ addPointToMap(xCord, yCord, fnVfinal)
1323
+ }
1324
+ }
1325
+
1326
+ if (lineCord.length != 0) {
1327
+
1328
+ addPolygonToMap(lineCord.split(' '), nameValue)
1329
+ }
1330
+
1331
+ }
1332
+
1333
+
1334
+ function addPointToMap(XY,infoWindowContent,iconURL)
1335
+ {
1336
+
1337
+
1338
+ var lon, lat;
1339
+ lon=XY.split(",")[0]
1340
+ lat=XY.split(",")[1]
1341
+ var pointSymbol;
1342
+ if (iconURL==""){
1343
+ pointSymbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255, 0, 0]));
1344
+ }
1345
+ else
1346
+ {
1347
+ try
1348
+ {
1349
+ pointSymbol = new esri.symbol.PictureMarkerSymbol(iconURL.split(",")[0], iconURL.split(",")[1], iconURL.split(",")[2]);
1350
+ }
1351
+ catch(err)
1352
+ {
1353
+ pointSymbol = new esri.symbol.PictureMarkerSymbol(iconURL,20,20);
1354
+ }
1355
+
1356
+ }
1357
+
1358
+ gsvc = new esri.tasks.GeometryService(host + "ArcGIS/rest/services/Utilities/Geometry/GeometryServer");
1359
+ var geomPoint = new esri.geometry.Point(lon, lat, new esri.SpatialReference({ wkid: 4326 }));
1360
+
1361
+ var graphic = new esri.Graphic(geomPoint, pointSymbol);
1362
+ var npr = new esri.SpatialReference({ wkid: 3414 });
1363
+
1364
+
1365
+ var infoTemplate1 = new esri.InfoTemplate();
1366
+ infoTemplate1.setTitle("KML Info");
1367
+ infoTemplate1.setContent("<div style='overflow-x:scroll;height:112px; width:200px'>" + infoWindowContent + "</div>");
1368
+
1369
+ if (lon.split(".")[0] > 999) {
1370
+
1371
+ var graphic1 = new esri.Graphic(geomPoint, pointSymbol);
1372
+
1373
+ graphic1.setInfoTemplate(infoTemplate1);
1374
+ OneMapKML.graphics.add(graphic1);
1375
+ }
1376
+ else {
1377
+ gsvc.project([geomPoint ], npr, function(featres) {
1378
+ var geomPoint1 = featres[0].geometry;
1379
+ var XYLocation = new esri.geometry.Point(featres[0].x, featres[0].y, new esri.SpatialReference({ wkid: 3414 }));
1380
+
1381
+ var graphic1 = new esri.Graphic(XYLocation , pointSymbol);
1382
+ graphic1.setInfoTemplate(infoTemplate1);
1383
+ OneMapKML.graphics.add(graphic1);
1384
+ });
1385
+ }
1386
+
1387
+
1388
+ }
1389
+
1390
+ var tempPoint;
1391
+
1392
+ function addPolygonToMap(polyPath, nameValue) {
1393
+
1394
+
1395
+ var color = "255,0,0";
1396
+ var lineThickness = "1.2";
1397
+ var outlineColor = "0,0,255";
1398
+
1399
+ gsvc = new esri.tasks.GeometryService(host + "ArcGIS/rest/services/Utilities/Geometry/GeometryServer");
1400
+ var npr = new esri.SpatialReference({ wkid: 3414 });
1401
+ var poly;
1402
+
1403
+ var coordType = 0
1404
+ var lngraphic = new esri.Graphic();
1405
+
1406
+ var point1;
1407
+ var pointSymbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255, 0, 0]));
1408
+
1409
+ var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color(outlineColor.split(",")), lineThickness), new dojo.Color((color + ",0.5").split(",")));
1410
+ var pntArr = new Array;
1411
+
1412
+ var factor = 1;
1413
+ //Added for other KML
1414
+ if (polyPath[0].split(",")[0]> 200)
1415
+ {
1416
+ coordType = 1
1417
+ }
1418
+ if (polyPath.length > 30) { factor = 2 }
1419
+ for (var l = 0; l < polyPath.length; l=l+factor) {
1420
+
1421
+ point1 = new esri.geometry.Point(polyPath[l].split(",")[0].replace('~', ''), polyPath[l].split(",")[1].replace('~', ''), new esri.SpatialReference({ wkid: 4326 }))
1422
+ pntArr.push(point1)
1423
+
1424
+ }
1425
+
1426
+ var polygon = new esri.geometry.Polygon(new esri.SpatialReference({ wkid: 4326 }));
1427
+ polygon.addRing(pntArr);
1428
+ lngraphic.geometry = polygon;
1429
+ var infoTemplate1 = new esri.InfoTemplate();
1430
+ infoTemplate1.setTitle("KML Info");
1431
+
1432
+ infoTemplate1.setContent("<div style='overflow-x:scroll;height:112px; width:242px'>" + nameValue + "</div>");
1433
+
1434
+ //coordType = 0
1435
+ if (coordType == 1) {
1436
+ lngraphic.setSymbol(symbol)
1437
+
1438
+ lngraphic.setInfoTemplate(infoTemplate1);
1439
+ OneMapKML.graphics.add(lngraphic);
1440
+ }
1441
+ else {
1442
+
1443
+ gsvc.project([lngraphic], npr, function(features) {
1444
+ var geomPoint1 = features[0].geometry;
1445
+ var graphic1 = new esri.Graphic(geomPoint1, symbol);
1446
+ graphic1.setInfoTemplate(infoTemplate1);
1447
+ OneMapKML.graphics.add(graphic1);
1448
+ });
1449
+ }
1450
+
1451
+ }
1452
+
1453
+
1454
+ function addPolylineToMap(polyPath, nameValue) {
1455
+
1456
+
1457
+ var color = "255,0,0";
1458
+ var lineThickness = "1.2";
1459
+ var outlineColor = "0,0,255";
1460
+
1461
+ gsvc = new esri.tasks.GeometryService(host + "ArcGIS/rest/services/Utilities/Geometry/GeometryServer");
1462
+ var npr = new esri.SpatialReference({ wkid: 3414 });
1463
+ var poly;
1464
+
1465
+ var coordType = 0
1466
+ var lngraphic = new esri.Graphic();
1467
+
1468
+ var point1;
1469
+ //var pointSymbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255, 0, 0]));
1470
+
1471
+ var symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASH, new dojo.Color([255,0,0]), 3); //new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color(color.split(",")), 1.1);
1472
+
1473
+ var pntArr = new Array;
1474
+
1475
+ var factor = 1;
1476
+ if (polyPath[0].split(",")[0]> 200)
1477
+ {
1478
+ coordType = 1
1479
+ }
1480
+ if (polyPath.length > 30) { factor = 2 }
1481
+ for (var l = 0; l < polyPath.length; l = l + factor) {
1482
+ point1 = new esri.geometry.Point(polyPath[l].split(",")[0].replace('~', ''), polyPath[l].split(",")[1].replace('~', ''), new esri.SpatialReference({ wkid: 4326 }))
1483
+
1484
+ pntArr.push(point1)
1485
+
1486
+ }
1487
+
1488
+ var polygon = new esri.geometry.Polyline(new esri.SpatialReference({ wkid: 4326 }));
1489
+ polygon.addPath(pntArr);
1490
+ lngraphic.geometry = polygon;
1491
+ var infoTemplate1 = new esri.InfoTemplate();
1492
+ infoTemplate1.setTitle("KML Info");
1493
+
1494
+ infoTemplate1.setContent("<div style='overflow-x:scroll;height:112px; width:242px'>" + nameValue + "</div>");
1495
+
1496
+ //coordType = 0
1497
+ if (coordType == 1) {
1498
+ lngraphic.setSymbol(symbol)
1499
+
1500
+ lngraphic.setInfoTemplate(infoTemplate1);
1501
+ OneMapKML.graphics.add(lngraphic);
1502
+ }
1503
+ else {
1504
+
1505
+ gsvc.project([lngraphic], npr, function(features) {
1506
+ var geomPoint1 = features[0].geometry;
1507
+ var graphic1 = new esri.Graphic(geomPoint1, symbol);
1508
+ graphic1.setInfoTemplate(infoTemplate1);
1509
+ OneMapKML.graphics.add(graphic1);
1510
+ });
1511
+ }
1512
+
1513
+ }
1514
+
1515
+
1516
+
1517
+ function clearGraphics() {
1518
+ var OneMap = this.map;
1519
+ try {
1520
+ OneMap.graphics.clear();
1521
+ }
1522
+ catch (Error) {
1523
+ }
1524
+
1525
+ }
1526
+
1527
+
1528
+ //-------------- mashupTheme-------------------------------------------------
1529
+ var _OneMapCurrExtents = "";
1530
+
1531
+ function mashupDataOnExtentChnage(extent) {
1532
+ _OneMapCurrExtents = extent.xmin + "," + extent.ymin + "," + extent.xmax + "," + extent.ymax;
1533
+
1534
+ var mashupOneMap = this
1535
+ for (var i = 0; i < mashupOneMap.graphicsLayerIds.length; i++) {
1536
+ var mashupObject = new MashupData();
1537
+ var themeName = mashupOneMap.graphicsLayerIds[i]
1538
+ mashupObject.token = _OneMapGlobalToken
1539
+ mashupObject.themeName = themeName;
1540
+ mashupObject.extent = _OneMapCurrExtents;
1541
+ var _OneMapThemeGraphicsLayer = mashupOneMap._layers[themeName];
1542
+ mashupObject.graphicLayer = _OneMapThemeGraphicsLayer;
1543
+ mashupObject.GetMashupData(function(mashupResults) {
1544
+ var results = mashupResults.results;
1545
+ if (results == "No results") {
1546
+ return
1547
+ }
1548
+
1549
+ var featcount = mashupResults.count;
1550
+ var themeName = mashupResults.theme
1551
+ var calloutFields = mashupResults.calloutFields;
1552
+ var calloutURL = mashupResults.calloutURL;
1553
+ var calloutUniqueFld = mashupResults.calloutUniqueFld;
1554
+ var iconPath = mashupResults.iconPath
1555
+ var featType = mashupResults.featType;
1556
+ var color = mashupResults.color
1557
+ var outlineColor = mashupResults.outlineColor
1558
+ var lineThickness = mashupResults.lineThickness
1559
+ var themeGraphicsLayer_1 = mashupResults.graphicLayer
1560
+
1561
+ themeGraphicsLayer_1.clear();
1562
+
1563
+ if (results.length == 0) { return }
1564
+
1565
+ for (var i = 0; i < results.length; i++) {
1566
+ if (calloutURL != "") {
1567
+ calloutURL = calloutURL.replace("intranet.onemap.gov.sg", "www.onemap.sg")
1568
+
1569
+ var multipleDataURL = calloutURL + results[i][calloutUniqueFld.toUpperCase()]
1570
+ var nameVal = "";
1571
+ nameVal = "<iFrame src='" + multipleDataURL + "'></iFrame>"
1572
+ infoTemplate1.setContent(nameVal);
1573
+ }
1574
+ else {
1575
+ var infoTemplate1 = new esri.InfoTemplate();
1576
+ infoTemplate1.setTitle(themeName);
1577
+ var nameVal = "";
1578
+ nameVal += "<strong>" + results[i]["NAME"] + "</strong>" + "<br/>"
1579
+ nameVal += results[i]["DESCRIPTION"] + "<br/>"
1580
+ nameVal += "<a href=" + results[i]["HYPERLINK"] + " target='_blank'>More Info</a>"
1581
+ nameVal += "<img src=" + results[i]["PHOTOURL"] + "></img>" + "<br/>"
1582
+ nameVal += results[i]["ADDRESSBLOCKHOUSENUMBER"] + " " + results[i]["ADDRESSSTREETNAME"] + " " + results[i]["ADDRESSBUILDINGNAME"] + " " + results[i]["ADDRESSFLOORNUMBER"] + " " + results[i]["ADDRESSUNITNUMBER"] + "<br/>"
1583
+ nameVal += "Singapore " + results[i]["ADDRESSPOSTALCODE"] + "<br/>"
1584
+ infoTemplate1.setContent(nameVal);
1585
+ }
1586
+ var graphic;
1587
+ if (featType.toUpperCase() == "LINE") {
1588
+ graphic = generateLineGraphic(results[i].XY, color, lineThickness)
1589
+ }
1590
+ else if (featType.toUpperCase() == "POLYGON") {
1591
+ graphic = generatePolygonGraphic(results[i].XY, color, outlineColor, lineThickness)
1592
+ }
1593
+ else if (featType.toUpperCase() == "POINT") {
1594
+ graphic = generatePointGraphic(results[i].XY, results[i].ICON_NAME, iconPath)
1595
+ }
1596
+
1597
+ graphic.setInfoTemplate(infoTemplate1);
1598
+ themeGraphicsLayer_1.add(graphic);
1599
+ }
1600
+ }
1601
+ );
1602
+
1603
+ }
1604
+ }
1605
+
1606
+ function mashupTheme(themeName, token) {
1607
+ if (themeName == "") { return }
1608
+
1609
+ var mashupOneMap = this;
1610
+ var mashupObject = new MashupData();
1611
+
1612
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
1613
+ mashupObject.token = token;
1614
+
1615
+ mashupObject.themeName = themeName;
1616
+ mashupObject.extent = mashupOneMap.map.extent.xmin + "," + mashupOneMap.map.extent.ymin + "," + mashupOneMap.map.extent.xmax + "," + mashupOneMap.map.extent.ymax;
1617
+
1618
+ var _OneMapThemeGraphicsLayer = new esri.layers.GraphicsLayer();
1619
+
1620
+ _OneMapThemeGraphicsLayer.id = themeName
1621
+
1622
+ mashupOneMap.map.addLayer(_OneMapThemeGraphicsLayer);
1623
+
1624
+ mashupObject.graphicLayer = _OneMapThemeGraphicsLayer;
1625
+ mashupObject.GetMashupData(overlayData_1)
1626
+
1627
+ mashupOneMap.onOneMapExtentChange(mashupDataOnExtentChnage)
1628
+ return _OneMapThemeGraphicsLayer
1629
+ }
1630
+
1631
+
1632
+ function overlayData_1(mashupResults) {
1633
+
1634
+ var results = mashupResults.results;
1635
+
1636
+ if (results == "No results") {
1637
+ return
1638
+ }
1639
+
1640
+ var featcount = mashupResults.count;
1641
+ var themeName = mashupResults.theme
1642
+ var calloutFields = mashupResults.calloutFields;
1643
+ var calloutURL = mashupResults.calloutURL;
1644
+ var calloutUniqueFld = mashupResults.calloutUniqueFld;
1645
+ var iconPath = mashupResults.iconPath
1646
+ var featType = mashupResults.featType;
1647
+ var color = mashupResults.color
1648
+ var outlineColor = mashupResults.outlineColor
1649
+ var lineThickness = mashupResults.lineThickness
1650
+ var themeGraphicsLayer_1 = mashupResults.graphicLayer
1651
+
1652
+ themeGraphicsLayer_1.clear();
1653
+
1654
+ if (results.length == 0) {
1655
+ return
1656
+ }
1657
+
1658
+
1659
+ for (var i = 0; i < results.length; i++) {
1660
+ if (calloutURL != "") {
1661
+ calloutURL = calloutURL.replace("intranet.onemap.gov.sg", "www.onemap.sg")
1662
+
1663
+ var multipleDataURL = calloutURL + results[i][calloutUniqueFld.toUpperCase()]
1664
+ var nameVal = "";
1665
+ nameVal = "<iFrame src='" + multipleDataURL + "'></iFrame>"
1666
+ infoTemplate1.setContent(nameVal);
1667
+ }
1668
+ else {
1669
+ var infoTemplate1 = new esri.InfoTemplate();
1670
+ infoTemplate1.setTitle(themeName);
1671
+ var nameVal = "";
1672
+ nameVal += "<strong>" + results[i]["NAME"] + "</strong>" + "<br/>"
1673
+ nameVal += results[i]["DESCRIPTION"] + "<br/>"
1674
+ nameVal += "<a href=" + results[i]["HYPERLINK"] + " target='_blank'>More Info</a>"
1675
+ nameVal += "<img src=" + results[i]["PHOTOURL"] + "></img>" + "<br/>"
1676
+ nameVal += results[i]["ADDRESSBLOCKHOUSENUMBER"] + " " + results[i]["ADDRESSSTREETNAME"] + " " + results[i]["ADDRESSBUILDINGNAME"] + " " + results[i]["ADDRESSFLOORNUMBER"] + " " + results[i]["ADDRESSUNITNUMBER"] + "<br/>"
1677
+ nameVal += "Singapore " + results[i]["ADDRESSPOSTALCODE"] + "<br/>"
1678
+ infoTemplate1.setContent(nameVal);
1679
+ }
1680
+ var graphic;
1681
+ if (featType.toUpperCase() == "LINE") {
1682
+ graphic = generateLineGraphic(results[i].XY, color, lineThickness)
1683
+ }
1684
+ else if (featType.toUpperCase() == "POLYGON") {
1685
+ graphic = generatePolygonGraphic(results[i].XY, color, outlineColor, lineThickness)
1686
+ }
1687
+ else if (featType.toUpperCase() == "POINT") {
1688
+ graphic = generatePointGraphic(results[i].XY, results[i].ICON_NAME, iconPath)
1689
+ }
1690
+
1691
+ graphic.setInfoTemplate(infoTemplate1);
1692
+ themeGraphicsLayer_1.add(graphic);
1693
+ }
1694
+ }
1695
+
1696
+
1697
+ function generatePointGraphic(XY, iconNam, iconPath) {
1698
+ var coords = new Array();
1699
+ coords = XY.split(",")
1700
+ var xCord = coords[0]
1701
+ var yCord = coords[1]
1702
+ //var iconNam = singleRecord.ICON_NAME
1703
+ var iconURL = iconPath + iconNam//singleRecord.ICON_NAME
1704
+ if (iconURL != "") {
1705
+ iconURL = iconURL.replace("www.onemap.sg", "www.onemap.sg")
1706
+ var thmSymbol = new esri.symbol.PictureMarkerSymbol(iconURL, 20, 20)
1707
+ }
1708
+ var PointLocation = new esri.geometry.Point(xCord, yCord, new esri.SpatialReference({ wkid: 3414 }))
1709
+ var PointGraphic = new esri.Graphic(PointLocation, thmSymbol);
1710
+ return PointGraphic
1711
+ }
1712
+
1713
+
1714
+ function generateLineGraphic(linePath, color, lineThickness) {
1715
+
1716
+ var splitLine = linePath.toString().split("|");
1717
+ var point1;
1718
+ var lineSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color(color.split(",")), lineThickness);
1719
+
1720
+ var points = new Array(splitLine.length);
1721
+ var LineArr = new Array;
1722
+ for (var l = 0; l < splitLine.length; l++) {
1723
+ point1 = new esri.geometry.Point(splitLine[l].split(",")[0], splitLine[l].split(",")[1], new esri.SpatialReference({ wkid: 3414 }))
1724
+ LineArr.push(point1)
1725
+ }
1726
+ var polyline = new esri.geometry.Polyline(new esri.SpatialReference({ wkid: 3414 }))
1727
+ polyline.addPath(LineArr)
1728
+
1729
+ var lngraphic = new esri.Graphic(polyline, lineSymbol);
1730
+ return lngraphic//ln
1731
+ }
1732
+
1733
+
1734
+ function generatePolygonGraphic(polyPath, color, outlineColor, lineThickness) {
1735
+
1736
+ var pntArr = new Array;
1737
+ var poly;
1738
+ var polysymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color(outlineColor.split(",")), lineThickness), new dojo.Color((color + ",0.5").split(",")));
1739
+
1740
+ xyArr = polyPath.toString().split("|");
1741
+ for (j = 0; j < xyArr.length; j++) {
1742
+ poly = new esri.geometry.Point(xyArr[j].split(",")[0], xyArr[j].split(",")[1], new esri.SpatialReference({ wkid: 3414}))
1743
+ pntArr.push(poly)
1744
+ }
1745
+ var polygon = new esri.geometry.Polygon(new esri.SpatialReference({ wkid: 3414}));
1746
+ polygon.addRing(pntArr);
1747
+ var polygraphic1 = new esri.Graphic(polygon, polysymbol);
1748
+ return polygraphic1
1749
+ }
1750
+
1751
+
1752
+
1753
+
1754
+ function OneMapLayerInfo(layerName) {
1755
+
1756
+ this.themeName = layerName;
1757
+ this.GetLayerInfo = GetLayerInfo;
1758
+ }
1759
+
1760
+ function GetLayerInfo(callback) {
1761
+
1762
+ layerName = this.themeName
1763
+ var url = host + "API/services.svc/layerinfo?token=" + token + "layername=" + layerName;
1764
+
1765
+ xmlhttp = GetXmlHttpObject();
1766
+ if (xmlhttp == null) {
1767
+ return;
1768
+ }
1769
+
1770
+ restURL = url;
1771
+
1772
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
1773
+ var outPutResults = new Object;
1774
+ var firstRecord = parsedJSON.LayerInfo[0]
1775
+ outPutResults.Category = firstRecord.CATEGORY
1776
+ outPutResults.FeatureType = firstRecord.FEATTYPE;
1777
+ outPutResults.MinLevel = firstRecord.MINLEVEL
1778
+ outPutResults.MaxLevel = firstRecord.MAXLEVEL
1779
+ outPutResults.IconPath = firstRecord.IconPath
1780
+ outPutResults.AgencyName = firstRecord.AGENCY
1781
+ outPutResults.FieldNames = firstRecord.FIELD_NAM_T
1782
+ outPutResults.Icon = firstRecord.ICON_NAM_T
1783
+ outPutResults.MapTipFieldName = firstRecord.FIELD_NAM_T.split(",")[0];
1784
+ outPutResults.calloutURL = firstRecord.CALLOUTURL;
1785
+ outPutResults.calloutUniqueFld = firstRecord.CALLOUTFIELDNAME;
1786
+ outPutResults.visibleFields = firstRecord.SHOWNATTRIBS;
1787
+ outPutResults.pointColour = firstRecord.COLOR_T;
1788
+
1789
+ if (outPutResults.results.length == 0) { outPutResults.results = "No results"; }
1790
+ callback(outPutResults);
1791
+ });
1792
+
1793
+
1794
+ }
1795
+
1796
+
1797
+ //-------------- mashupTheme end -------------------------------------------------
1798
+
1799
+ function nullCheck(input) {
1800
+ if (input == undefined)
1801
+ return '-'
1802
+ if (input == "")
1803
+ return '-'
1804
+ return input
1805
+ }
1806
+
1807
+
1808
+
1809
+ function CoordConvertor() {
1810
+ this.ConvertCoordinate = ConvertCoordinate
1811
+ }
1812
+
1813
+ function ConvertCoordinate(inputXYList, inputSR, outputSR, callback) {debugger;
1814
+ var host2= "http://tasks.arcgisonline.com/";
1815
+ var gsvc = new esri.tasks.GeometryService(host + "arcgis/rest/services/Utilities/Geometry/GeometryServer");
1816
+ var graphic
1817
+ var nsr = new esri.SpatialReference({ wkid: outputSR });
1818
+
1819
+ if (inputXYList.split(",").length == 2) {
1820
+ var pointSymbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255, 0, 0]));
1821
+ var geomPoint = new esri.geometry.Point(inputXYList.split(",")[0], inputXYList.split(",")[1], new esri.SpatialReference({ wkid: inputSR }));
1822
+ graphic = new esri.Graphic(geomPoint, pointSymbol);
1823
+
1824
+ gsvc.project([geomPoint], nsr, function(outXY) {
1825
+
1826
+ var xy = outXY[0].x + "," + outXY[0].y;
1827
+ callback(outXY[0].x + "," + outXY[0].y)
1828
+ //callback(outXY[0].geometry.x + "," + outXY[0].geometry.y)
1829
+ //added for lat - long
1830
+ //callback(outXY[0].geometry.y + "," + outXY[0].geometry.x)
1831
+ })
1832
+ }
1833
+ else {
1834
+ graphic = getLineGraphic(inputXYList, inputSR)
1835
+ gsvc.project([graphic], nsr, function(outXY) {
1836
+
1837
+ var geometry = outXY[0].geometry.paths[0];
1838
+ var outputGeoms = "";
1839
+
1840
+ for (var l = 0; l < geometry.length; l++) {
1841
+ outputGeoms = outputGeoms + "," + geometry[l][0] + "," + geometry[l][1]
1842
+ }
1843
+ if (outputGeoms != "") { outputGeoms = outputGeoms.substring(1) }
1844
+ callback(outputGeoms)
1845
+ })
1846
+ }
1847
+ }
1848
+
1849
+
1850
+ function getLineGraphic(linePath, inputSR) {
1851
+ //var linePath = singleRecord.XY;
1852
+ var splitLine = linePath.toString().split(",");
1853
+ var point1;
1854
+
1855
+ var points = new Array(splitLine.length);
1856
+ var LineArr = new Array;
1857
+ for (var l = 0; l < splitLine.length; l = l + 2) {
1858
+ point1 = new esri.geometry.Point(splitLine[l], splitLine[l + 1], new esri.SpatialReference({ wkid: inputSR }))
1859
+ LineArr.push(point1)
1860
+ }
1861
+ var polyline = new esri.geometry.Polyline(new esri.SpatialReference({ wkid: inputSR }))
1862
+ polyline.addPath(LineArr)
1863
+ var lngraphic = new esri.Graphic();
1864
+ lngraphic.geometry = polyline;
1865
+
1866
+ return lngraphic
1867
+ };
1868
+
1869
+
1870
+
1871
+ //Get Url Response for REST Samples only
1872
+
1873
+ function GetURLResponse(url, callback) {
1874
+
1875
+
1876
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
1877
+
1878
+ var outPutResults = "";
1879
+ outPutResults = parsedJSON.toString();
1880
+
1881
+ results(outPutResults);
1882
+
1883
+ })
1884
+ }
1885
+
1886
+ function RegisterAPI() {
1887
+
1888
+ this.token = "";
1889
+ this.name = "";
1890
+ this.email = "";
1891
+ this.phone = "";
1892
+ this.url = "";
1893
+ this.authkey = "";
1894
+ this.commUse = "";
1895
+ this.GetRegisterAPIResults = GetRegisterAPIResults;
1896
+ }
1897
+
1898
+
1899
+ function GetRegisterAPIResults(callback) {
1900
+
1901
+ var obj = this;
1902
+
1903
+ var token = obj.token;
1904
+ try { if (_OneMapGlobalToken != '') { token = _OneMapGlobalToken; } } catch (err) { }
1905
+ var token = obj.token;
1906
+ var nam = obj.name;
1907
+ var email = obj.email;
1908
+ var phone = obj.phone;
1909
+ var url = obj.url;
1910
+ var authKey = obj.authkey;
1911
+ var commercialUse = obj.commUse;
1912
+
1913
+
1914
+ url = host + "RegisterAPI/services.svc/registerApi?url="+url+"&usrname="+nam+"&email="+email+"&phone="+phone+"&commercialuse="+commercialUse+"&authkey="+authKey;
1915
+
1916
+ $.getJSON(url + "&callback=?", function(parsedJSON) {
1917
+ var outPutResults = new Object;
1918
+ outPutResults.results = parsedJSON.Results[0].Message;
1919
+ callback(outPutResults);
1920
+ });
1921
+ }
1922
+
1923
+ /// Don't write anything below this
1924
+
1925
+ var _OneMapGlobalToken='';
1926
+ document.write('<link rel="stylesheet" type="text/css" href="http://t1.onemap.sg/om_js/arcgis_js_api/library/2.8/arcgis/js/dojo/dijit/themes/tundra/tundra.css"/>');
1927
+ document.write('<script type="text/javascript" src="http://t1.onemap.sg/om_js/arcgis_js_api/library/2.8/arcgis/js/default.js"></script>');
1928
+ // var _OneMapGlobalToken='KUWmLBEUle8fI5HoN0LyiaeWwJov0QaOKS+Sc51NGOgESaBrMbC8ZHhXkfBzjxxvmO2dWn0uPrKNEN9ICHfdbF0PQk/+Wgy3';