sbf 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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';