I'm going to guess you intended to insert into the googlemaps table and not a database called googlemaps with a table called values (if I'm mistaken, let me know and I'll edit my answer). So that's the first thing. The next thing is you want to use backticks not single quotes table and column names.
$query = "INSERT INTO `googlemaps` (`id`,`lat`,`long`,`desc`) VALUES ".$sql;
The backtick is a quote identifier and will prevent you from accidentally using a reserved keyword when a column or table name was intended.
The identifier quote character is the backtick (“`”) Click here to read more
Since you are not using any keywords except for desc and long, you could also write your query like this:
$query = "INSERT INTO googlemaps (id,lat,`long`,`desc`) VALUES ".$sql;
And because nobody wants to get a SQL injection, you can modify your for-loop like this:
$sql = "(NULL, '".mysqli_escape_string($db, $_POST['value'][$i])."', '".mysqli_escape_string($db, $_POST['value'][$i+1])."', '".mysqli_escape_string($db, $_POST['value'][$i+2])."')";
mysqli_escape_string Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection. Read more by clicking here
It looks you are trying to do an extended insert too
Your final code would look something like this (set $db to whatever your connection variable is):
$sql = ; // define as an array
Implode will join the SQL string back together comma separated
implode Join array elements with a string Read more by reading the documentation here