sbf 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +21 -0
- data/app/assets/javascripts/application.js +15 -0
- data/app/assets/javascripts/map.js +665 -0
- data/app/assets/javascripts/onemap.js +1928 -0
- data/app/assets/javascripts/units.js.coffee +3 -0
- data/app/assets/stylesheets/application.css +13 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
- data/app/assets/stylesheets/scaffolds.css.scss +69 -0
- data/app/assets/stylesheets/units.css.scss +3 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/buses_controller.rb +5 -0
- data/app/controllers/units_controller.rb +74 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/helpers/units_helper.rb +2 -0
- data/app/models/ability.rb +39 -0
- data/app/models/block.rb +163 -0
- data/app/models/estate.rb +70 -0
- data/app/models/quota.rb +80 -0
- data/app/models/settings.rb +4 -0
- data/app/models/unit.rb +121 -0
- data/app/views/blocks/_map.html.erb +37 -0
- data/app/views/kaminari/twitter-bootstrap/_first_page.html.haml +8 -0
- data/app/views/kaminari/twitter-bootstrap/_last_page.html.haml +8 -0
- data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +19 -0
- data/app/views/layouts/application.html.erb +14 -0
- data/app/views/layouts/rails_admin/application.html.haml +31 -0
- data/app/views/units/_form.html.erb +37 -0
- data/app/views/units/edit.html.erb +6 -0
- data/app/views/units/index.html.erb +30 -0
- data/app/views/units/index.json.jbuilder +4 -0
- data/app/views/units/new.html.erb +5 -0
- data/app/views/units/show.html.erb +29 -0
- data/app/views/units/show.json.jbuilder +1 -0
- data/config/initializers/rails_admin.rb +203 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20130721172422_create_blocks.rb +17 -0
- data/db/migrate/20130721173925_create_units.rb +16 -0
- data/db/migrate/20130721205526_create_estates.rb +12 -0
- data/db/migrate/20130722004104_add_estate_id_to_block.rb +5 -0
- data/db/migrate/20130722004318_update_estate_id_for_blocks.rb +13 -0
- data/db/migrate/20130722010900_remove_estate_from_blocks.rb +5 -0
- data/db/migrate/20130722105351_fix_numeric_columns.rb +39 -0
- data/db/migrate/20130910145656_create_quota.rb +16 -0
- data/db/migrate/20130910151554_populate_quota_table.rb +35 -0
- data/db/migrate/20130912181314_remove_ethnic_quota_from_blocks.rb +5 -0
- data/db/schema.rb +68 -0
- data/lib/kml/busstops-kml-105.kml +156 -0
- data/lib/kml/busstops-kml-106.kml +368 -0
- data/lib/kml/busstops-kml-108.kml +156 -0
- data/lib/kml/busstops-kml-135.kml +181 -0
- data/lib/kml/busstops-kml-136.kml +792 -0
- data/lib/kml/busstops-kml-137.kml +675 -0
- data/lib/kml/busstops-kml-138.kml +634 -0
- data/lib/kml/busstops-kml-139.kml +323 -0
- data/lib/kml/busstops-kml-140.kml +156 -0
- data/lib/kml/busstops-kml-165.kml +207 -0
- data/lib/kml/busstops-kml-166.kml +622 -0
- data/lib/kml/busstops-kml-167.kml +554 -0
- data/lib/kml/busstops-kml-168.kml +840 -0
- data/lib/kml/busstops-kml-169.kml +1401 -0
- data/lib/kml/busstops-kml-170.kml +1171 -0
- data/lib/kml/busstops-kml-171.kml +225 -0
- data/lib/kml/busstops-kml-187.kml +225 -0
- data/lib/kml/busstops-kml-188.kml +179 -0
- data/lib/kml/busstops-kml-196.kml +646 -0
- data/lib/kml/busstops-kml-197.kml +662 -0
- data/lib/kml/busstops-kml-198.kml +1005 -0
- data/lib/kml/busstops-kml-199.kml +1052 -0
- data/lib/kml/busstops-kml-200.kml +1331 -0
- data/lib/kml/busstops-kml-201.kml +1351 -0
- data/lib/kml/busstops-kml-218.kml +248 -0
- data/lib/kml/busstops-kml-219.kml +179 -0
- data/lib/kml/busstops-kml-220.kml +248 -0
- data/lib/kml/busstops-kml-221.kml +225 -0
- data/lib/kml/busstops-kml-225.kml +179 -0
- data/lib/kml/busstops-kml-226.kml +363 -0
- data/lib/kml/busstops-kml-227.kml +849 -0
- data/lib/kml/busstops-kml-228.kml +1015 -0
- data/lib/kml/busstops-kml-229.kml +759 -0
- data/lib/kml/busstops-kml-230.kml +557 -0
- data/lib/kml/busstops-kml-231.kml +998 -0
- data/lib/kml/busstops-kml-232.kml +2153 -0
- data/lib/kml/busstops-kml-233.kml +498 -0
- data/lib/kml/busstops-kml-234.kml +502 -0
- data/lib/kml/busstops-kml-235.kml +249 -0
- data/lib/kml/busstops-kml-249.kml +248 -0
- data/lib/kml/busstops-kml-250.kml +179 -0
- data/lib/kml/busstops-kml-251.kml +455 -0
- data/lib/kml/busstops-kml-252.kml +409 -0
- data/lib/kml/busstops-kml-253.kml +570 -0
- data/lib/kml/busstops-kml-254.kml +202 -0
- data/lib/kml/busstops-kml-256.kml +363 -0
- data/lib/kml/busstops-kml-257.kml +536 -0
- data/lib/kml/busstops-kml-258.kml +515 -0
- data/lib/kml/busstops-kml-259.kml +774 -0
- data/lib/kml/busstops-kml-260.kml +536 -0
- data/lib/kml/busstops-kml-261.kml +738 -0
- data/lib/kml/busstops-kml-262.kml +783 -0
- data/lib/kml/busstops-kml-263.kml +1044 -0
- data/lib/kml/busstops-kml-264.kml +543 -0
- data/lib/kml/busstops-kml-265.kml +624 -0
- data/lib/kml/busstops-kml-266.kml +934 -0
- data/lib/kml/busstops-kml-267.kml +883 -0
- data/lib/kml/busstops-kml-268.kml +187 -0
- data/lib/kml/busstops-kml-280.kml +271 -0
- data/lib/kml/busstops-kml-281.kml +248 -0
- data/lib/kml/busstops-kml-282.kml +639 -0
- data/lib/kml/busstops-kml-283.kml +501 -0
- data/lib/kml/busstops-kml-284.kml +432 -0
- data/lib/kml/busstops-kml-285.kml +432 -0
- data/lib/kml/busstops-kml-286.kml +363 -0
- data/lib/kml/busstops-kml-287.kml +272 -0
- data/lib/kml/busstops-kml-288.kml +792 -0
- data/lib/kml/busstops-kml-289.kml +801 -0
- data/lib/kml/busstops-kml-290.kml +673 -0
- data/lib/kml/busstops-kml-291.kml +474 -0
- data/lib/kml/busstops-kml-292.kml +256 -0
- data/lib/kml/busstops-kml-293.kml +748 -0
- data/lib/kml/busstops-kml-294.kml +999 -0
- data/lib/kml/busstops-kml-295.kml +769 -0
- data/lib/kml/busstops-kml-296.kml +1051 -0
- data/lib/kml/busstops-kml-297.kml +904 -0
- data/lib/kml/busstops-kml-298.kml +731 -0
- data/lib/kml/busstops-kml-299.kml +644 -0
- data/lib/kml/busstops-kml-300.kml +274 -0
- data/lib/kml/busstops-kml-302.kml +156 -0
- data/lib/kml/busstops-kml-311.kml +179 -0
- data/lib/kml/busstops-kml-312.kml +455 -0
- data/lib/kml/busstops-kml-313.kml +639 -0
- data/lib/kml/busstops-kml-314.kml +639 -0
- data/lib/kml/busstops-kml-315.kml +708 -0
- data/lib/kml/busstops-kml-316.kml +394 -0
- data/lib/kml/busstops-kml-317.kml +363 -0
- data/lib/kml/busstops-kml-318.kml +830 -0
- data/lib/kml/busstops-kml-319.kml +370 -0
- data/lib/kml/busstops-kml-320.kml +560 -0
- data/lib/kml/busstops-kml-321.kml +432 -0
- data/lib/kml/busstops-kml-322.kml +365 -0
- data/lib/kml/busstops-kml-323.kml +529 -0
- data/lib/kml/busstops-kml-324.kml +549 -0
- data/lib/kml/busstops-kml-325.kml +717 -0
- data/lib/kml/busstops-kml-326.kml +645 -0
- data/lib/kml/busstops-kml-327.kml +908 -0
- data/lib/kml/busstops-kml-328.kml +467 -0
- data/lib/kml/busstops-kml-329.kml +876 -0
- data/lib/kml/busstops-kml-330.kml +795 -0
- data/lib/kml/busstops-kml-331.kml +442 -0
- data/lib/kml/busstops-kml-342.kml +271 -0
- data/lib/kml/busstops-kml-343.kml +547 -0
- data/lib/kml/busstops-kml-344.kml +317 -0
- data/lib/kml/busstops-kml-345.kml +557 -0
- data/lib/kml/busstops-kml-346.kml +777 -0
- data/lib/kml/busstops-kml-347.kml +777 -0
- data/lib/kml/busstops-kml-348.kml +762 -0
- data/lib/kml/busstops-kml-349.kml +668 -0
- data/lib/kml/busstops-kml-350.kml +366 -0
- data/lib/kml/busstops-kml-351.kml +301 -0
- data/lib/kml/busstops-kml-352.kml +367 -0
- data/lib/kml/busstops-kml-353.kml +271 -0
- data/lib/kml/busstops-kml-354.kml +225 -0
- data/lib/kml/busstops-kml-355.kml +611 -0
- data/lib/kml/busstops-kml-356.kml +842 -0
- data/lib/kml/busstops-kml-357.kml +838 -0
- data/lib/kml/busstops-kml-358.kml +808 -0
- data/lib/kml/busstops-kml-359.kml +786 -0
- data/lib/kml/busstops-kml-360.kml +680 -0
- data/lib/kml/busstops-kml-361.kml +785 -0
- data/lib/kml/busstops-kml-362.kml +815 -0
- data/lib/kml/busstops-kml-363.kml +389 -0
- data/lib/kml/busstops-kml-374.kml +432 -0
- data/lib/kml/busstops-kml-376.kml +205 -0
- data/lib/kml/busstops-kml-377.kml +889 -0
- data/lib/kml/busstops-kml-378.kml +936 -0
- data/lib/kml/busstops-kml-379.kml +577 -0
- data/lib/kml/busstops-kml-380.kml +794 -0
- data/lib/kml/busstops-kml-381.kml +619 -0
- data/lib/kml/busstops-kml-382.kml +716 -0
- data/lib/kml/busstops-kml-383.kml +204 -0
- data/lib/kml/busstops-kml-385.kml +271 -0
- data/lib/kml/busstops-kml-386.kml +795 -0
- data/lib/kml/busstops-kml-387.kml +875 -0
- data/lib/kml/busstops-kml-388.kml +598 -0
- data/lib/kml/busstops-kml-389.kml +648 -0
- data/lib/kml/busstops-kml-390.kml +297 -0
- data/lib/kml/busstops-kml-391.kml +519 -0
- data/lib/kml/busstops-kml-392.kml +426 -0
- data/lib/kml/busstops-kml-393.kml +959 -0
- data/lib/kml/busstops-kml-394.kml +250 -0
- data/lib/kml/busstops-kml-395.kml +187 -0
- data/lib/kml/busstops-kml-405.kml +248 -0
- data/lib/kml/busstops-kml-407.kml +277 -0
- data/lib/kml/busstops-kml-408.kml +670 -0
- data/lib/kml/busstops-kml-409.kml +1094 -0
- data/lib/kml/busstops-kml-410.kml +1009 -0
- data/lib/kml/busstops-kml-411.kml +880 -0
- data/lib/kml/busstops-kml-412.kml +988 -0
- data/lib/kml/busstops-kml-413.kml +396 -0
- data/lib/kml/busstops-kml-417.kml +615 -0
- data/lib/kml/busstops-kml-418.kml +869 -0
- data/lib/kml/busstops-kml-419.kml +1174 -0
- data/lib/kml/busstops-kml-420.kml +463 -0
- data/lib/kml/busstops-kml-421.kml +253 -0
- data/lib/kml/busstops-kml-422.kml +180 -0
- data/lib/kml/busstops-kml-423.kml +865 -0
- data/lib/kml/busstops-kml-424.kml +664 -0
- data/lib/kml/busstops-kml-425.kml +457 -0
- data/lib/kml/busstops-kml-426.kml +179 -0
- data/lib/kml/busstops-kml-438.kml +157 -0
- data/lib/kml/busstops-kml-439.kml +388 -0
- data/lib/kml/busstops-kml-440.kml +248 -0
- data/lib/kml/busstops-kml-441.kml +409 -0
- data/lib/kml/busstops-kml-442.kml +411 -0
- data/lib/kml/busstops-kml-443.kml +795 -0
- data/lib/kml/busstops-kml-444.kml +321 -0
- data/lib/kml/busstops-kml-447.kml +226 -0
- data/lib/kml/busstops-kml-448.kml +668 -0
- data/lib/kml/busstops-kml-449.kml +508 -0
- data/lib/kml/busstops-kml-450.kml +796 -0
- data/lib/kml/busstops-kml-451.kml +783 -0
- data/lib/kml/busstops-kml-452.kml +157 -0
- data/lib/kml/busstops-kml-454.kml +670 -0
- data/lib/kml/busstops-kml-455.kml +1211 -0
- data/lib/kml/busstops-kml-456.kml +496 -0
- data/lib/kml/busstops-kml-457.kml +220 -0
- data/lib/kml/busstops-kml-470.kml +248 -0
- data/lib/kml/busstops-kml-473.kml +434 -0
- data/lib/kml/busstops-kml-474.kml +433 -0
- data/lib/kml/busstops-kml-475.kml +405 -0
- data/lib/kml/busstops-kml-478.kml +271 -0
- data/lib/kml/busstops-kml-479.kml +780 -0
- data/lib/kml/busstops-kml-480.kml +604 -0
- data/lib/kml/busstops-kml-481.kml +676 -0
- data/lib/kml/busstops-kml-482.kml +603 -0
- data/lib/kml/busstops-kml-483.kml +501 -0
- data/lib/kml/busstops-kml-484.kml +179 -0
- data/lib/kml/busstops-kml-485.kml +317 -0
- data/lib/kml/busstops-kml-486.kml +460 -0
- data/lib/kml/busstops-kml-487.kml +887 -0
- data/lib/kml/busstops-kml-488.kml +210 -0
- data/lib/kml/busstops-kml-501.kml +455 -0
- data/lib/kml/busstops-kml-502.kml +317 -0
- data/lib/kml/busstops-kml-503.kml +317 -0
- data/lib/kml/busstops-kml-504.kml +411 -0
- data/lib/kml/busstops-kml-505.kml +461 -0
- data/lib/kml/busstops-kml-506.kml +544 -0
- data/lib/kml/busstops-kml-509.kml +256 -0
- data/lib/kml/busstops-kml-510.kml +869 -0
- data/lib/kml/busstops-kml-511.kml +1146 -0
- data/lib/kml/busstops-kml-512.kml +963 -0
- data/lib/kml/busstops-kml-513.kml +1307 -0
- data/lib/kml/busstops-kml-514.kml +437 -0
- data/lib/kml/busstops-kml-515.kml +363 -0
- data/lib/kml/busstops-kml-516.kml +599 -0
- data/lib/kml/busstops-kml-517.kml +1078 -0
- data/lib/kml/busstops-kml-518.kml +709 -0
- data/lib/kml/busstops-kml-519.kml +179 -0
- data/lib/kml/busstops-kml-520.kml +225 -0
- data/lib/kml/busstops-kml-532.kml +363 -0
- data/lib/kml/busstops-kml-534.kml +179 -0
- data/lib/kml/busstops-kml-535.kml +989 -0
- data/lib/kml/busstops-kml-536.kml +1196 -0
- data/lib/kml/busstops-kml-537.kml +631 -0
- data/lib/kml/busstops-kml-540.kml +346 -0
- data/lib/kml/busstops-kml-541.kml +984 -0
- data/lib/kml/busstops-kml-542.kml +256 -0
- data/lib/kml/busstops-kml-543.kml +496 -0
- data/lib/kml/busstops-kml-544.kml +855 -0
- data/lib/kml/busstops-kml-545.kml +612 -0
- data/lib/kml/busstops-kml-546.kml +225 -0
- data/lib/kml/busstops-kml-547.kml +645 -0
- data/lib/kml/busstops-kml-548.kml +363 -0
- data/lib/kml/busstops-kml-549.kml +386 -0
- data/lib/kml/busstops-kml-550.kml +225 -0
- data/lib/kml/busstops-kml-551.kml +271 -0
- data/lib/kml/busstops-kml-566.kml +436 -0
- data/lib/kml/busstops-kml-567.kml +461 -0
- data/lib/kml/busstops-kml-568.kml +253 -0
- data/lib/kml/busstops-kml-571.kml +241 -0
- data/lib/kml/busstops-kml-572.kml +630 -0
- data/lib/kml/busstops-kml-573.kml +430 -0
- data/lib/kml/busstops-kml-574.kml +625 -0
- data/lib/kml/busstops-kml-575.kml +1110 -0
- data/lib/kml/busstops-kml-576.kml +1082 -0
- data/lib/kml/busstops-kml-577.kml +205 -0
- data/lib/kml/busstops-kml-581.kml +735 -0
- data/lib/kml/busstops-kml-582.kml +248 -0
- data/lib/kml/busstops-kml-594.kml +179 -0
- data/lib/kml/busstops-kml-595.kml +179 -0
- data/lib/kml/busstops-kml-597.kml +436 -0
- data/lib/kml/busstops-kml-598.kml +458 -0
- data/lib/kml/busstops-kml-601.kml +179 -0
- data/lib/kml/busstops-kml-602.kml +389 -0
- data/lib/kml/busstops-kml-603.kml +157 -0
- data/lib/kml/busstops-kml-605.kml +456 -0
- data/lib/kml/busstops-kml-606.kml +298 -0
- data/lib/kml/busstops-kml-607.kml +792 -0
- data/lib/kml/busstops-kml-608.kml +463 -0
- data/lib/kml/busstops-kml-626.kml +248 -0
- data/lib/kml/busstops-kml-628.kml +157 -0
- data/lib/kml/busstops-kml-629.kml +501 -0
- data/lib/kml/busstops-kml-630.kml +340 -0
- data/lib/kml/busstops-kml-631.kml +249 -0
- data/lib/kml/busstops-kml-632.kml +202 -0
- data/lib/kml/busstops-kml-633.kml +319 -0
- data/lib/kml/busstops-kml-635.kml +225 -0
- data/lib/kml/busstops-kml-636.kml +317 -0
- data/lib/kml/busstops-kml-638.kml +667 -0
- data/lib/kml/busstops-kml-656.kml +156 -0
- data/lib/kml/busstops-kml-657.kml +271 -0
- data/lib/kml/busstops-kml-660.kml +432 -0
- data/lib/kml/busstops-kml-662.kml +227 -0
- data/lib/kml/busstops-kml-663.kml +271 -0
- data/lib/kml/busstops-kml-664.kml +202 -0
- data/lib/kml/busstops-kml-665.kml +718 -0
- data/lib/kml/busstops-kml-666.kml +179 -0
- data/lib/kml/busstops-kml-667.kml +206 -0
- data/lib/kml/busstops-kml-669.kml +225 -0
- data/lib/kml/busstops-kml-688.kml +271 -0
- data/lib/kml/busstops-kml-690.kml +179 -0
- data/lib/kml/busstops-kml-691.kml +496 -0
- data/lib/kml/busstops-kml-692.kml +179 -0
- data/lib/kml/busstops-kml-693.kml +271 -0
- data/lib/kml/busstops-kml-695.kml +363 -0
- data/lib/kml/busstops-kml-696.kml +842 -0
- data/lib/kml/busstops-kml-697.kml +265 -0
- data/lib/kml/busstops-kml-698.kml +179 -0
- data/lib/kml/busstops-kml-700.kml +156 -0
- data/lib/kml/busstops-kml-719.kml +294 -0
- data/lib/kml/busstops-kml-721.kml +319 -0
- data/lib/kml/busstops-kml-722.kml +460 -0
- data/lib/kml/busstops-kml-723.kml +843 -0
- data/lib/kml/busstops-kml-724.kml +989 -0
- data/lib/kml/busstops-kml-725.kml +297 -0
- data/lib/kml/busstops-kml-726.kml +447 -0
- data/lib/kml/busstops-kml-727.kml +942 -0
- data/lib/kml/busstops-kml-728.kml +179 -0
- data/lib/kml/busstops-kml-75.kml +156 -0
- data/lib/kml/busstops-kml-750.kml +271 -0
- data/lib/kml/busstops-kml-751.kml +225 -0
- data/lib/kml/busstops-kml-752.kml +271 -0
- data/lib/kml/busstops-kml-753.kml +180 -0
- data/lib/kml/busstops-kml-754.kml +887 -0
- data/lib/kml/busstops-kml-755.kml +1067 -0
- data/lib/kml/busstops-kml-756.kml +609 -0
- data/lib/kml/busstops-kml-757.kml +448 -0
- data/lib/kml/busstops-kml-758.kml +391 -0
- data/lib/kml/busstops-kml-785.kml +341 -0
- data/lib/kml/busstops-kml-786.kml +365 -0
- data/lib/kml/busstops-kml-787.kml +662 -0
- data/lib/kml/busstops-kml-788.kml +1180 -0
- data/lib/kml/busstops-kml-789.kml +180 -0
- data/lib/kml/busstops-kml-816.kml +179 -0
- data/lib/kml/busstops-kml-817.kml +179 -0
- data/lib/kml/busstops-kml-818.kml +478 -0
- data/lib/kml/busstops-kml-819.kml +604 -0
- data/lib/kml/busstops-kml-820.kml +318 -0
- data/lib/kml/busstops-kml-849.kml +503 -0
- data/lib/kml/busstops-kml-850.kml +157 -0
- data/lib/kml/busstops-kml-877.kml +156 -0
- data/lib/kml/busstops-kml-908.kml +156 -0
- data/lib/kml/busstops-kml-969.kml +156 -0
- data/lib/sbf.rb +6 -0
- data/lib/sbf/engine.rb +19 -0
- data/lib/sbf/version.rb +3 -0
- data/lib/tasks/sbf_tasks.rake +4 -0
- metadata +467 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c637317310cf4f2302699d36fd15029d6472c3d8
|
4
|
+
data.tar.gz: 7c505356e156f11f4f34a831dd8231226ca8a93b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 52550866302e742ca6eedffdb4443abd92dea8a6f330c3e82d3b33d4e08cd53362214732014aebd3709d04e7859fe9b7307ff72a30e1f29bfd8141b50ae1b026
|
7
|
+
data.tar.gz: 34510540ba41de3d156ce1a2e457eee008371ed7e0469a8b10bd96bfecddb98c387209c09d8274f9f9d17894ef9171d39a866cffa23bbbb2a8ef47b620ee6c54
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Sbf'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require turbolinks
|
@@ -0,0 +1,665 @@
|
|
1
|
+
// layerData json structure: for future extension
|
2
|
+
|
3
|
+
var custom_layerData = {
|
4
|
+
AgencyName: "LTA",
|
5
|
+
Category: "Transit",
|
6
|
+
FeatureType: "Point",
|
7
|
+
FieldNames: "NAME,TOTALROOMS,KEEPERNAME,POSTALCODE,DESCRIPTION,ADDRESS,HYPERLINK",
|
8
|
+
Icon: undefined,
|
9
|
+
IconPath: "http://t1.onemap.sg/icons/HOTELS/",
|
10
|
+
MapTipFieldName: "NAME",
|
11
|
+
MaxLevel: "",
|
12
|
+
MinLevel: "",
|
13
|
+
RelatedTabName: "",
|
14
|
+
calloutFieldName: "",
|
15
|
+
calloutURL: "",
|
16
|
+
color: "",
|
17
|
+
lineThickness: "",
|
18
|
+
outlineColor: "",
|
19
|
+
pointColour: undefined,
|
20
|
+
visibleFields: "1,0,0,1,0,1,1"
|
21
|
+
}
|
22
|
+
|
23
|
+
function loadScript(entry) {
|
24
|
+
// alert(entry + $('#div_onemap').length + typeof dojo + $('#map_canvas').length + typeof google);
|
25
|
+
getAddress();
|
26
|
+
|
27
|
+
if (typeof google === 'undefined') {
|
28
|
+
var script = document.createElement("script");
|
29
|
+
script.type = "text/javascript";
|
30
|
+
script.src = 'http://maps.googleapis.com/maps/api/js?v=3&libraries=places&sensor=false&callback=initGMap';
|
31
|
+
document.body.appendChild(script);
|
32
|
+
} else {
|
33
|
+
initGMap();
|
34
|
+
}
|
35
|
+
|
36
|
+
// $.getScript("http://www.onemap.sg/API/JS?accessKEY=<%= Settings.onemap_api_key %>&v=2.8&type=full", function(data) {
|
37
|
+
// eval(data);
|
38
|
+
// window.dojo.addOnLoad(addressSearch);
|
39
|
+
// });
|
40
|
+
|
41
|
+
if (typeof dojo === 'undefined') {
|
42
|
+
var script2 = document.createElement("script");
|
43
|
+
script2.type = "text/javascript";
|
44
|
+
script2.src = onemap_path;
|
45
|
+
document.body.appendChild(script2);
|
46
|
+
|
47
|
+
var script3 = document.createElement("script");
|
48
|
+
script3.type = "text/javascript";
|
49
|
+
script3.src = "http://t1.onemap.sg/om_js/arcgis_js_api/library/2.8/arcgis/js/default.js";
|
50
|
+
document.body.appendChild(script3);
|
51
|
+
|
52
|
+
|
53
|
+
script3.onreadystatechange = function() {
|
54
|
+
if (this.readyState == 'complete' || this.readyState == 'loaded') this.onload({ target: this });
|
55
|
+
};
|
56
|
+
|
57
|
+
script3.onload = function(load) {
|
58
|
+
/*init code here*/
|
59
|
+
dojo.addOnLoad(initOneMap);
|
60
|
+
};
|
61
|
+
} else {
|
62
|
+
dojo.addOnLoad(initOneMap);
|
63
|
+
}
|
64
|
+
|
65
|
+
// jQuery.ajax({
|
66
|
+
// async:false,
|
67
|
+
// type:'GET',
|
68
|
+
// url: "http://www.onemap.sg/API/JS?accessKEY=<%= Settings.onemap_api_key %>&v=2.8&type=full",
|
69
|
+
// data:null,
|
70
|
+
// success: om_success,
|
71
|
+
// dataType:'script'
|
72
|
+
// });
|
73
|
+
}
|
74
|
+
|
75
|
+
//window.onload = loadScript('window');
|
76
|
+
$('body').bind('pjax:end',loadScript('pjax:end'));
|
77
|
+
// $('body').bind('pjax:end',dojo.addOnLoad(addressSearch));
|
78
|
+
|
79
|
+
|
80
|
+
// $(document).bind('pjax:success', function() {
|
81
|
+
// jQuery.ajax({
|
82
|
+
// async:false,
|
83
|
+
// type:'GET',
|
84
|
+
// url: "http://www.onemap.sg/API/JS?accessKEY=<%= Settings.onemap_api_key %>&v=2.8&type=full",
|
85
|
+
// data:null,
|
86
|
+
// success: om_success,
|
87
|
+
// dataType:'script'
|
88
|
+
// });
|
89
|
+
// });
|
90
|
+
// loadScript;
|
91
|
+
// //google.maps.event.addDomListener(window, 'load', initialize);
|
92
|
+
// dojo.addOnLoad(addressSearch);
|
93
|
+
// });
|
94
|
+
|
95
|
+
// $(document).bind('pjax:popstate', function() {
|
96
|
+
// $(document).bind('pjax:end', function(event) {
|
97
|
+
// $(event.target).find('script').each(function() {
|
98
|
+
// $.globalEval(this.text || this.textContent || this.innerHTML || '');
|
99
|
+
// })
|
100
|
+
// });
|
101
|
+
// });
|
102
|
+
|
103
|
+
function getAddress() {
|
104
|
+
if (typeof address === 'undefined') address = $('#address').data("address");
|
105
|
+
return address;
|
106
|
+
}
|
107
|
+
|
108
|
+
/*
|
109
|
+
methods for Google Maps
|
110
|
+
*/
|
111
|
+
|
112
|
+
function initGMap() {
|
113
|
+
// alert("loaded!");
|
114
|
+
var address = getAddress();
|
115
|
+
var yourAddress = address + ", Singapore";
|
116
|
+
var geocoder = new google.maps.Geocoder();
|
117
|
+
|
118
|
+
var mapOptions;
|
119
|
+
|
120
|
+
infowindow = new google.maps.InfoWindow();
|
121
|
+
|
122
|
+
geocoder.geocode({
|
123
|
+
address: yourAddress
|
124
|
+
}, function(locResult) {
|
125
|
+
console.log(locResult, 'gmap_result');
|
126
|
+
|
127
|
+
var center = locResult[0].geometry.location;
|
128
|
+
|
129
|
+
mapOptions = {
|
130
|
+
zoom: 18,
|
131
|
+
center: center,
|
132
|
+
mapTypeId: google.maps.MapTypeId.ROADMAP
|
133
|
+
}
|
134
|
+
|
135
|
+
map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
|
136
|
+
|
137
|
+
var marker = new google.maps.Marker({
|
138
|
+
position: center,
|
139
|
+
title: address,
|
140
|
+
map: map,
|
141
|
+
});
|
142
|
+
|
143
|
+
var transitLayer = new google.maps.TransitLayer();
|
144
|
+
transitLayer.setMap(map);
|
145
|
+
|
146
|
+
var request = {
|
147
|
+
location: center,
|
148
|
+
radius: '1000',
|
149
|
+
types: ['bus_station']
|
150
|
+
};
|
151
|
+
|
152
|
+
service = new google.maps.places.PlacesService(map);
|
153
|
+
service.nearbySearch(request, callback);
|
154
|
+
});
|
155
|
+
|
156
|
+
// alert(google);
|
157
|
+
// alert(dojo);
|
158
|
+
// dojo.addOnLoad(addressSearch);
|
159
|
+
}
|
160
|
+
|
161
|
+
function callback(results, status) {
|
162
|
+
if (status == google.maps.places.PlacesServiceStatus.OK) {
|
163
|
+
console.log(results, 'places');
|
164
|
+
for (var i = 0; i < results.length; i++) {
|
165
|
+
var place = results[i];
|
166
|
+
createMarker(results[i]);
|
167
|
+
}
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
function createMarker(place) {
|
172
|
+
var placeLoc = place.geometry.location;
|
173
|
+
var marker = new google.maps.Marker({
|
174
|
+
map: map,
|
175
|
+
position: place.geometry.location
|
176
|
+
});
|
177
|
+
|
178
|
+
google.maps.event.addListener(marker, 'click', function() {
|
179
|
+
infowindow.setContent(place.name);
|
180
|
+
infowindow.open(map, this);
|
181
|
+
});
|
182
|
+
}
|
183
|
+
|
184
|
+
function overlayData(mashupResults)
|
185
|
+
{
|
186
|
+
function hexToRgb(hex) {
|
187
|
+
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
188
|
+
return result ? {
|
189
|
+
r: parseInt(result[1], 16),
|
190
|
+
g: parseInt(result[2], 16),
|
191
|
+
b: parseInt(result[3], 16)
|
192
|
+
} : null;
|
193
|
+
}
|
194
|
+
var results = mashupResults.results;
|
195
|
+
console.log(mashupResults, 'bus_stops')
|
196
|
+
|
197
|
+
if (results == "No results") {
|
198
|
+
// alert("Theme not found. Please check theme name.");
|
199
|
+
return
|
200
|
+
}
|
201
|
+
|
202
|
+
var featcount = mashupResults.count;
|
203
|
+
var iconPath = mashupResults.iconPath;
|
204
|
+
|
205
|
+
iconPath = 'http://www.publictransport.sg/img/bus.gif';
|
206
|
+
var featType = mashupResults.featType;
|
207
|
+
var theme = mashupResults.theme;
|
208
|
+
|
209
|
+
themeGraphicsLayer.clear();
|
210
|
+
var i;
|
211
|
+
var xPnt;
|
212
|
+
var yPnt;
|
213
|
+
var xCord;
|
214
|
+
var yCord;
|
215
|
+
|
216
|
+
var pntArr = new Array();
|
217
|
+
|
218
|
+
|
219
|
+
if (results.length==0){
|
220
|
+
return
|
221
|
+
}
|
222
|
+
|
223
|
+
if (featType == "Point" || theme == 'Bus_Stop')
|
224
|
+
{
|
225
|
+
//process all the results
|
226
|
+
for (i = 0; i < results.length; i++)
|
227
|
+
{
|
228
|
+
|
229
|
+
//create point graphic on map using generatePointGraphic function
|
230
|
+
var PointGraphic=generatePointGraphic(results[i].XY,results[i].ICON_NAME,iconPath)
|
231
|
+
//set graphic attributes
|
232
|
+
PointGraphic.attributes=results[i]
|
233
|
+
//add newly created graphic in graphiclayer
|
234
|
+
themeGraphicsLayer.add(PointGraphic);
|
235
|
+
}
|
236
|
+
}
|
237
|
+
else if (featType == "Polygon")
|
238
|
+
{
|
239
|
+
var polygon;
|
240
|
+
for (i = 0;i < results.length; i++)
|
241
|
+
{
|
242
|
+
if(mashupResults.results[i].SYMBOLCOLOR !=undefined && mashupResults.results[i].SYMBOLCOLOR !="")
|
243
|
+
{
|
244
|
+
var polyColor = mashupResults.results[i].SYMBOLCOLOR;
|
245
|
+
var r= hexToRgb(polyColor).r;
|
246
|
+
var g= hexToRgb(polyColor).g;
|
247
|
+
var b= hexToRgb(polyColor).b;
|
248
|
+
}
|
249
|
+
else if(mashupResults.results[i].SYMBOLCOLOR =="")
|
250
|
+
{
|
251
|
+
var r= 0;
|
252
|
+
var g= 0;
|
253
|
+
var b= 0;
|
254
|
+
}
|
255
|
+
pntArr = [];
|
256
|
+
polygon = new esri.geometry.Polygon(new esri.SpatialReference({wkid:3414}));
|
257
|
+
|
258
|
+
for (var x=0; x < results[i].XY.split("|").length; x++)
|
259
|
+
{
|
260
|
+
xCord = results[i].XY.split("|")[x].split(",")[0];
|
261
|
+
yCord = results[i].XY.split("|")[x].split(",")[1];
|
262
|
+
|
263
|
+
var PointLocation = new esri.geometry.Point(xCord, yCord, new esri.SpatialReference({ wkid: 3414 }))
|
264
|
+
pntArr.push(PointLocation);
|
265
|
+
}
|
266
|
+
polygon.addRing(pntArr);
|
267
|
+
|
268
|
+
gra = new esri.Graphic;
|
269
|
+
gra.geometry = polygon;
|
270
|
+
gra.attributes=results[i];
|
271
|
+
|
272
|
+
var sfs = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
|
273
|
+
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
|
274
|
+
new dojo.Color([0,0,0]), 2),new dojo.Color([r,g,b,0.8]));
|
275
|
+
|
276
|
+
gra.symbol = sfs;
|
277
|
+
themeGraphicsLayer.add(gra);
|
278
|
+
}
|
279
|
+
}
|
280
|
+
else if (featType == "Line")
|
281
|
+
{
|
282
|
+
var pLine;
|
283
|
+
for (i = 0;i < results.length; i++)
|
284
|
+
{
|
285
|
+
if(mashupResults.results[i].SYMBOLCOLOR !=undefined && mashupResults.results[i].SYMBOLCOLOR !="")
|
286
|
+
{
|
287
|
+
var polyColor = mashupResults.results[i].SYMBOLCOLOR;
|
288
|
+
var r= hexToRgb(polyColor).r;
|
289
|
+
var g= hexToRgb(polyColor).g;
|
290
|
+
var b= hexToRgb(polyColor).b;
|
291
|
+
}
|
292
|
+
else if(mashupResults.results[i].SYMBOLCOLOR =="")
|
293
|
+
{
|
294
|
+
var r= 0;
|
295
|
+
var g= 0;
|
296
|
+
var b= 0;
|
297
|
+
}
|
298
|
+
pntArr = [];
|
299
|
+
pLine = new esri.geometry.Polyline(new esri.SpatialReference({wkid:3414}));
|
300
|
+
|
301
|
+
for (var x=0; x < results[i].XY.split("|").length; x++)
|
302
|
+
{
|
303
|
+
xCord = results[i].XY.split("|")[x].split(",")[0];
|
304
|
+
yCord = results[i].XY.split("|")[x].split(",")[1];
|
305
|
+
|
306
|
+
var PointLocation = new esri.geometry.Point(xCord, yCord, new esri.SpatialReference({ wkid: 3414 }))
|
307
|
+
pntArr.push(PointLocation);
|
308
|
+
}
|
309
|
+
pLine.addPath(pntArr);
|
310
|
+
|
311
|
+
gra = new esri.Graphic;
|
312
|
+
gra.geometry = pLine;
|
313
|
+
gra.attributes = results[i];
|
314
|
+
|
315
|
+
var sfs = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
|
316
|
+
new dojo.Color([r,g,b]), 2);
|
317
|
+
gra.symbol = sfs;
|
318
|
+
themeGraphicsLayer.add(gra);
|
319
|
+
}
|
320
|
+
}
|
321
|
+
}
|
322
|
+
|
323
|
+
|
324
|
+
/*
|
325
|
+
methods for OneMap
|
326
|
+
*/
|
327
|
+
|
328
|
+
function OverlayTheme(){
|
329
|
+
// debugger;
|
330
|
+
|
331
|
+
//var themeName = document.getElementById('txtTheme').value;
|
332
|
+
var themeName = 'Bus_Stop';
|
333
|
+
//themeName = 'Hotels';
|
334
|
+
|
335
|
+
// if (themeName == "") {
|
336
|
+
// alert('Please provide theme name')
|
337
|
+
// return
|
338
|
+
// }
|
339
|
+
|
340
|
+
mashup = new MashupData();
|
341
|
+
mashup.themeName = themeName;
|
342
|
+
mashup.layerData = custom_layerData; // somehow this avoids the error triggerd in GetMashupData due to invalid layerData
|
343
|
+
mashup.extent = OneMap.map.extent.xmin + "," + OneMap.map.extent.ymin + "," + OneMap.map.extent.xmax + "," + OneMap.map.extent.ymax;
|
344
|
+
// mashup.extent = OneMap.map.extent;
|
345
|
+
|
346
|
+
// (old) hack to prevent GetDataForCallout from breaking due to missing layerdata for Bus_Stop!
|
347
|
+
//if ((obj.layerData == undefined) || (obj.layerData == "")) {
|
348
|
+
// var extractData = new GetLayerInfoClass()
|
349
|
+
// extractData.themeName = 'Hotels';
|
350
|
+
// var extractedLayerData = extractData.ExtracLayerInfo(function(results) {
|
351
|
+
// mashup.layerData = results;
|
352
|
+
// })
|
353
|
+
//}
|
354
|
+
console.log(mashup, 'mashup_layerdata');
|
355
|
+
|
356
|
+
//add graphic layer
|
357
|
+
themeGraphicsLayer = new esri.layers.GraphicsLayer();
|
358
|
+
themeGraphicsLayer.id=themeName;
|
359
|
+
OneMap.map.addLayer(themeGraphicsLayer);
|
360
|
+
|
361
|
+
mashup.GetMashupData(overlayData);
|
362
|
+
|
363
|
+
|
364
|
+
//resize info widnow
|
365
|
+
OneMap.map.infoWindow.resize(300, 200);
|
366
|
+
OneMap.map.infoWindow.hide();
|
367
|
+
OneMap.onOneMapExtentChange(OverlayThemeOnExtentChnage)
|
368
|
+
try{
|
369
|
+
|
370
|
+
//set graphic onclick event
|
371
|
+
dojo.connect(themeGraphicsLayer, "onClick", function(evt)
|
372
|
+
{//debugger
|
373
|
+
console.log(mashup, 'mashup');
|
374
|
+
mashup.GetDataForCallout(evt.graphic,"",function(results)
|
375
|
+
{//debugger
|
376
|
+
var formattedResults=formatResultsBus(results);//mashup.formatResults(results);
|
377
|
+
OneMap.map.infoWindow.setContent(formattedResults);
|
378
|
+
$('a.busstop_code').bind('click', queryBusCode);
|
379
|
+
|
380
|
+
OneMap.map.infoWindow.show(evt.screenPoint,OneMap.map.getInfoWindowAnchor(evt.screenPoint));
|
381
|
+
});
|
382
|
+
})
|
383
|
+
}
|
384
|
+
catch (err)
|
385
|
+
{}
|
386
|
+
}
|
387
|
+
|
388
|
+
function OverlayThemeOnExtentChnage(extent)
|
389
|
+
{//debugger
|
390
|
+
|
391
|
+
mashup.extent = extent.xmin + "," + extent.ymin + "," + extent.xmax + "," + extent.ymax;
|
392
|
+
|
393
|
+
mashup.GetMashupData(overlayData)
|
394
|
+
}
|
395
|
+
|
396
|
+
function initOneMap() {
|
397
|
+
//alert(typeof OneMap);
|
398
|
+
// dojo.query('#div_onemap_infowindow').forEach(function(node){
|
399
|
+
// console.log(node,'dojo_node');
|
400
|
+
// dijit.byNode(node).destroyRecursive(true);
|
401
|
+
// });
|
402
|
+
|
403
|
+
// hack to remove orphaned dojo widget: div_onemap_infowindow
|
404
|
+
var ids = ["div_onemap_infowindow"];
|
405
|
+
dijit.registry.forEach(function(w){
|
406
|
+
if(dojo.indexOf(ids,1)){ // 1 will be yourid it will get destroy
|
407
|
+
w.destroyRecursive();
|
408
|
+
}
|
409
|
+
});
|
410
|
+
|
411
|
+
addressSearch();
|
412
|
+
}
|
413
|
+
|
414
|
+
function queryBusCode() {
|
415
|
+
code = $(this).attr('id');
|
416
|
+
var busstop_link = $(this);
|
417
|
+
var url = "http://www.onemap.sg/API/services.svc/busstop/" + code;
|
418
|
+
$.ajax({
|
419
|
+
url: url,
|
420
|
+
dataType: "jsonp",
|
421
|
+
success: function(data) {
|
422
|
+
console.log(data,'bus_services');
|
423
|
+
|
424
|
+
var services = $.map(data['Services'], function(n,i){
|
425
|
+
return "<a class='busstop_route'>" + n.SERVICES + "</a>";
|
426
|
+
});
|
427
|
+
|
428
|
+
var services_div = "<div id='" + code + "'>" + services.join("|") + "</div>"
|
429
|
+
busstop_link.replaceWith(services_div);
|
430
|
+
|
431
|
+
$('a.busstop_route').bind('click', queryBusRoute);
|
432
|
+
|
433
|
+
var layerList = OneMap.map.layerIds;
|
434
|
+
for (var i=0; i<layerList.length; i++) {
|
435
|
+
var layer = layerList[i]
|
436
|
+
if (layer.indexOf("route_layer") == 0) OneMap.map.removeLayer(OneMap.map.getLayer(layer));
|
437
|
+
}
|
438
|
+
}
|
439
|
+
});
|
440
|
+
}
|
441
|
+
|
442
|
+
function repaintPolyLine(layer) {
|
443
|
+
//create a random color for the symbol
|
444
|
+
var r = Math.floor(Math.random() * 250);
|
445
|
+
var g = Math.floor(Math.random() * 100);
|
446
|
+
var b = Math.floor(Math.random() * 100);
|
447
|
+
|
448
|
+
var symbol = new esri.symbol.SimpleLineSymbol().setWidth(4).setColor(new dojo.Color([r,g,b]));
|
449
|
+
|
450
|
+
var feature_layer = layer.getLayers()[0];
|
451
|
+
var features = feature_layer.graphics;
|
452
|
+
for (var i=0, il=features.length; i<il; i++) {
|
453
|
+
//set symbol
|
454
|
+
features[i].setSymbol(symbol);
|
455
|
+
}
|
456
|
+
|
457
|
+
dojo.connect(feature_layer,"onMouseOver",onMouseOverPolyLine);
|
458
|
+
}
|
459
|
+
|
460
|
+
function onMouseOverPolyLine(layer) {
|
461
|
+
// alert('test!');
|
462
|
+
}
|
463
|
+
|
464
|
+
var testKML;
|
465
|
+
|
466
|
+
function queryBusRoute() {
|
467
|
+
code = $(this).attr('id');
|
468
|
+
service = $(this).text();
|
469
|
+
var busstop_link = $(this);
|
470
|
+
var strKMLURL = "http://www.publictransport.sg/kml/busroutes/";
|
471
|
+
|
472
|
+
for(var i=0;i<2;i++) {
|
473
|
+
var layer_id = 'route_layer_' + service + '_' + (i+1);
|
474
|
+
if ($.inArray(layer_id, OneMap.map.layerIds) > -1) continue;
|
475
|
+
|
476
|
+
var kmlUrl = strKMLURL + service + "-" + (i+1) + ".kml";
|
477
|
+
var kml = new esri.layers.KMLLayer(kmlUrl,{
|
478
|
+
// http://www.onemap.sg/api/help/JSCoordConvertor.aspx
|
479
|
+
outSR: new esri.SpatialReference({ wkid: 3414 })
|
480
|
+
});
|
481
|
+
|
482
|
+
testKML = kml;
|
483
|
+
|
484
|
+
// if (kml.loaded) {
|
485
|
+
// repaintPolyLine();
|
486
|
+
// }
|
487
|
+
// else {
|
488
|
+
dojo.connect(kml,"onLoad",repaintPolyLine);
|
489
|
+
|
490
|
+
kml.id = layer_id;
|
491
|
+
OneMap.map.addLayer(kml);
|
492
|
+
}
|
493
|
+
}
|
494
|
+
|
495
|
+
function formatResultsBus(resultObject) {
|
496
|
+
//debugger;
|
497
|
+
var nameVal = ""
|
498
|
+
nameVal = nameVal + "<br/>"
|
499
|
+
// to add Name on top
|
500
|
+
for (var key in resultObject[0]) {
|
501
|
+
switch (key) {
|
502
|
+
case 'NAME':
|
503
|
+
if (resultObject[0]["NAME"] != "") {
|
504
|
+
nameVal += "<strong>" + resultObject[0][key] + "</strong>" + "<br/>"
|
505
|
+
break;
|
506
|
+
}
|
507
|
+
else { break; }
|
508
|
+
case 'BUS_STOP_CODE':
|
509
|
+
if (resultObject[0][key] != "") {
|
510
|
+
var code = resultObject[0][key];
|
511
|
+
nameVal += "<br/><a id='" + code +"' class='busstop_code'>Services</a>" + "<br/>"
|
512
|
+
break;
|
513
|
+
}
|
514
|
+
else { break; }
|
515
|
+
}
|
516
|
+
}
|
517
|
+
for (var key in resultObject[0]) {
|
518
|
+
switch (key) {
|
519
|
+
case 'NAME':
|
520
|
+
if (resultObject[0]["NAME"] != "") {
|
521
|
+
break;
|
522
|
+
}
|
523
|
+
else { break; }
|
524
|
+
case "PHOTOURL":
|
525
|
+
if (resultObject[0]["PHOTOURL"] != "") {
|
526
|
+
break;
|
527
|
+
}
|
528
|
+
else { break; }
|
529
|
+
case "ICON_NAME":
|
530
|
+
if (resultObject[0]["ICON_NAME"] != "") {
|
531
|
+
break;
|
532
|
+
}
|
533
|
+
else { break; }
|
534
|
+
case "XY":
|
535
|
+
if (resultObject[0]["XY"] != "") {
|
536
|
+
break;
|
537
|
+
}
|
538
|
+
else { break; }
|
539
|
+
case 'DESCRIPTION':
|
540
|
+
if (resultObject[0]["DESCRIPTION"] != "") {
|
541
|
+
nameVal += resultObject[0]["DESCRIPTION"] + " "
|
542
|
+
break;
|
543
|
+
}
|
544
|
+
else { break; }
|
545
|
+
case "HYPERLINK":
|
546
|
+
if (resultObject[0]["HYPERLINK"] != "") {
|
547
|
+
nameVal += "<br/><a href=" + resultObject[0]["HYPERLINK"] + " target='_blank'>More Info</a>" + "<br/>"
|
548
|
+
break;
|
549
|
+
}
|
550
|
+
else { break; }
|
551
|
+
case "ADDRESSSTREETNAME":
|
552
|
+
if (resultObject[0]["ADDRESSSTREETNAME"] != "") {
|
553
|
+
nameVal += resultObject[0]["ADDRESSSTREETNAME"] + " "
|
554
|
+
break;
|
555
|
+
}
|
556
|
+
else { break; }
|
557
|
+
case "ADDRESSFLOORNUMBER":
|
558
|
+
if (resultObject[0]["ADDRESSFLOORNUMBER"] != "") {
|
559
|
+
nameVal += resultObject[0]["ADDRESSFLOORNUMBER"] + " "
|
560
|
+
break;
|
561
|
+
}
|
562
|
+
else { break; }
|
563
|
+
case "ADDRESSBLOCKHOUSENUMBER":
|
564
|
+
if (resultObject[0]["ADDRESSBLOCKHOUSENUMBER"] != "") {
|
565
|
+
nameVal += resultObject[0]["ADDRESSBLOCKHOUSENUMBER"] + " "
|
566
|
+
break;
|
567
|
+
}
|
568
|
+
else { break; }
|
569
|
+
case "ADDRESSBUILDINGNAME":
|
570
|
+
if (resultObject[0]["ADDRESSBUILDINGNAME"] != "") {
|
571
|
+
nameVal += resultObject[0]["ADDRESSBUILDINGNAME"] + " "
|
572
|
+
break;
|
573
|
+
}
|
574
|
+
else { break; }
|
575
|
+
case "ADDRESSFLOORNUMBER":
|
576
|
+
if (resultObject[0]["ADDRESSFLOORNUMBER"] != "") {
|
577
|
+
nameVal += resultObject[0]["ADDRESSFLOORNUMBER"] + " "
|
578
|
+
break;
|
579
|
+
}
|
580
|
+
else { break; }
|
581
|
+
case "ADDRESSUNITNUMBER":
|
582
|
+
if (resultObject[0]["ADDRESSUNITNUMBER"] != "") {
|
583
|
+
nameVal += resultObject[0]["ADDRESSUNITNUMBER"] + " "
|
584
|
+
break;
|
585
|
+
}
|
586
|
+
else { break; }
|
587
|
+
case "ADDRESSPOSTALCODE":
|
588
|
+
if (resultObject[0]["ADDRESSPOSTALCODE"] != "") {
|
589
|
+
nameVal += resultObject[0]["ADDRESSPOSTALCODE"] + " "
|
590
|
+
break;
|
591
|
+
}
|
592
|
+
else { break; }
|
593
|
+
case "SYMBOLCOLOR":
|
594
|
+
if (resultObject[0]["SYMBOLCOLOR"] != "") {
|
595
|
+
break;
|
596
|
+
}
|
597
|
+
else { break; }
|
598
|
+
case "MAPTIP":
|
599
|
+
if (resultObject[0]["MAPTIP"] != "") {
|
600
|
+
break;
|
601
|
+
}
|
602
|
+
else { break; }
|
603
|
+
case "OBJECTID":
|
604
|
+
if (resultObject[0]["OBJECTID"] != "") {
|
605
|
+
break;
|
606
|
+
}
|
607
|
+
else { break; }
|
608
|
+
default:
|
609
|
+
nameVal += resultObject[0][key] + "<br/>"
|
610
|
+
}
|
611
|
+
}
|
612
|
+
// for photo to be on bottom
|
613
|
+
for (var key in resultObject[0]) {
|
614
|
+
switch (key) {
|
615
|
+
case "PHOTOURL":
|
616
|
+
if (resultObject[0]["PHOTOURL"] != "") {
|
617
|
+
nameVal += "<img src=" + resultObject[0]["PHOTOURL"] + "></img>" + "<br/>"
|
618
|
+
break;
|
619
|
+
}
|
620
|
+
else { break; }
|
621
|
+
}
|
622
|
+
}
|
623
|
+
return nameVal
|
624
|
+
|
625
|
+
}
|
626
|
+
|
627
|
+
function addressSearch() {
|
628
|
+
var basicSearch = new BasicSearch;
|
629
|
+
basicSearch.searchVal = address;
|
630
|
+
basicSearch.returnGeom = 1;
|
631
|
+
basicSearch.GetSearchResults(function(resultData) {
|
632
|
+
var results = resultData.results;
|
633
|
+
console.log(results,'om_BasicSearch');
|
634
|
+
omResults = results;
|
635
|
+
var row = false;
|
636
|
+
if (results=='No results') {
|
637
|
+
// return false
|
638
|
+
}
|
639
|
+
else {
|
640
|
+
row = results[0];
|
641
|
+
// alert(row);
|
642
|
+
// return row;
|
643
|
+
}
|
644
|
+
createMap(row);
|
645
|
+
});
|
646
|
+
// dojo.addOnLoad(createMap);
|
647
|
+
}
|
648
|
+
|
649
|
+
function createMap(center) {
|
650
|
+
var levelNumber=8;
|
651
|
+
var centerPoint="28968.103,33560.969"
|
652
|
+
|
653
|
+
if (center != false) {
|
654
|
+
centerPoint = center.X + ',' + center.Y;
|
655
|
+
}
|
656
|
+
|
657
|
+
OneMap = new GetOneMap('div_onemap','SM',{level:levelNumber,center:centerPoint});
|
658
|
+
dojo.addOnLoad(OverlayTheme);
|
659
|
+
|
660
|
+
if (center != false) {
|
661
|
+
OneMap.showLocation(parseFloat(center.X),parseFloat(center.Y));
|
662
|
+
}
|
663
|
+
|
664
|
+
dojo.require("esri.layers.KMLLayer");
|
665
|
+
}
|