An earthquake of magnitude 7.8 has struck Mindanao in the Philippines, the US Geological Survey has said.