¿Cómo enviar valores de un elemento seleccionado en una vista de lista json a otra actividad?

Estoy creando una aplicación que obtiene datos de países (nombre, latitud, longitud, ...) deJSON y crea unlistview, donde cada elemento es un país diferente.

Esa parte está funcionando pero, cada vez que hago clic en un elemento, se abre MapActivity, con el mapa centrado en ese país. El problema es que no puedo enviar las coordenadas de MainActivity a MapsActivity.

public class TodasAsCategorias extends AppCompatActivity {

private String TAG = TodasAsCategorias.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
private static String url = "http://*************/api/continent/any/country/all?id=siF1uXXEsltXOi5CWlSIzy7EABlnE5iF33bnNmfAHJiYXYNmjY";
ArrayList<HashMap<String, String>> listaPaises;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_todas_as_categorias);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Categorias");

    listaPaises = new ArrayList<>();
    lv = (ListView) findViewById(R.id.list);
    new GetPaises().execute();
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    menu.findItem(R.id.spinner_cat).setVisible(false);
    menu.findItem(R.id.spinner_pais).setVisible(false);
    return true;
}

private class GetPaises extends AsyncTask<Void, Void, Void> implements Serializable {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(TodasAsCategorias.this);
        pDialog.setMessage("Aguarde...");
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        HttpHandler sh = new HttpHandler();
        final String jsonStr = sh.makeServiceCall(url);
        Log.e(TAG, "Response from URL: " + jsonStr);
        if (jsonStr != null) {
            try {
                JSONArray array = new JSONArray(jsonStr);
                for (int i = 0; i < array.length(); i++) {
                    JSONObject jsonObject = array.getJSONObject(i);
                    JSONArray paises = jsonObject.optJSONArray("paises");
                    if (paises != null) {
                        for (int j = 0; j < paises.length(); j++) {
                            JSONObject jsonObject1 = paises.getJSONObject(j);

                            String K_PAIS = jsonObject1.getString("K_PAIS");
                            String Designacao = jsonObject1.getString("Designacao");
                            String URL_IMAGE_SMALL = jsonObject1.getString("URL_IMAGE_SMALL");
                            String Coord_LAT = jsonObject1.getString("Coord_LAT");
                            String Coord_LONG = jsonObject1.getString("Coord_LONG");
                            String Coord_Zoom = jsonObject1.getString("Coord_Zoom");

                            HashMap<String, String> pais = new HashMap<>();

                            pais.put("K_PAIS", K_PAIS);
                            pais.put("Designacao", Designacao);
                            pais.put("URL_IMAGE_SMALL", URL_IMAGE_SMALL);
                            pais.put("Coord_LAT", Coord_LAT);
                            pais.put("Coord_LONG", Coord_LONG);
                            pais.put("Coord_Zoom", Coord_Zoom);

                            listaPaises.add(pais);
                        }
                    }
                }
            } catch (final JSONException e) {
                Log.e(TAG, "Json parsing error: " + e.getMessage());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "Json parsin error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });
            }

        } else {
            Log.e(TAG, "Couldn't get json from server.");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Couldn't get json from server. Check LogCat for possible errpr!", Toast.LENGTH_LONG).show();
                }
            });
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        if (pDialog.isShowing()) {
            pDialog.dismiss();
        }
        ListAdapter adapter = new SimpleAdapter(TodasAsCategorias.this, listaPaises, R.layout.list_item, new String[]{ "Designacao","Coord_LAT", "Coord_LONG", "Coord_Zoom"},
                new int[]{R.id.Designacao,R.id.Lat, R.id.Long, R.id.Zoom});
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> pare, View view, int position, long id) {
                Intent intent = new Intent(TodasAsCategorias.this, MapsActivity.class);

                startActivity(intent);
            }
        });
    }
}
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta