Given that you were able to level the bed and the printer homes itself I suspect there is an issue with the contents of the G-Code file you are attempting to print.
How are you generating your 3D print file? Are you using Snapmaker3D or CURA 15.04?
When you generate the file are you making sure that the object actually placed on the bottom (Z -= 0) center of the build platform?
If you open your G Code file in a text editor you should have a section of the file near the top of the file that reads like this
;Filament used: 0m
;Layer height: 0.2
;Generated with Cura_SteamEngine 2.7.0
;Start GCode begin
G90 ;absolute positioning
G1 X-4 Y-4
G1 Z0 F3000
There is a good reference (http://marlinfw.org/docs/gcode/M104.html) that is helpful to decoding Marlin compatible G Code files.
M104 - Set Hotend Temperature
M109 - Wait for Hotend Temperature
G28 - Auto Home
G90 - Absolute Positioning
G1 - Linear Move
In the above example there is no M140 - Set Bed Temperature as I have issues with my heated bed and I am running with it disabled until I receive my replacement bed.
When ever I observer bizarre behaviors such as you have described I save (export) the G Code into a file so that it can be examined using a text editor or run through one of the on-line simulators to be checked for anomalies.
If you are interested in using a GCode Print Simulator to check you code there is a JAVA one on Thingiverse (https://www.thingiverse.com/thing:44286) that I have found useful when I do not want to wasted filament.