Sé que esto es antiguo, pero me encontré con este problema y ninguna de las respuestas es adecuada. La solución de nickf funciona pero requiere javascript. La mejor manera es deshabilitar el campo y aún pasar el valor es usar un campo de entrada oculto para pasar el valor al formulario. Por ejemplo,
<input type="text" value="22.2222" disabled="disabled" />
<input type="hidden" name="lat" value="22.2222" />
De esta forma se pasa el valor pero el usuario ve el campo en gris. El atributo readonly no lo atenúa.